[英]Cgit and Nginx URL rewrite
有線URL重寫問題
我轉到的時候
它工作正常,回購顯示。 然而,該頁面上的鏈接再次附加/ foo,即
當我轉到URL時
它有效,但該頁面上的每個鏈接看起來都像
這是我的nginx.conf,我錯過了什么嗎?
server {
listen 80;
server_name git.example.org;
root /var/www/htdocs/cgit;
index cgit.cgi;
location ~* ^.+\.(css|png|ico)$ {
expires 30d;
}
if ($request_filename = cgit.cgi){
rewrite ^/([^/]+/.*)$ /cgit.cgi?url=$1 last;
}
location / {
try_files $uri @cgit;
}
location @cgit {
fastcgi_pass unix:/var/run/fcgiwrap.socket;
fastcgi_param SCRIPT_FILENAME $document_root/cgit.cgi;
fastcgi_param HTTP_HOST $server_name;
fastcgi_param PATH_INFO $uri;
include fastcgi_params;
}
access_log /var/log/nginx/cgit_access.log;
error_log /var/log/nginx/cgit_error.log warn;
}
更新,已解決
它的cgit設置virtual-root = /我也更新了我的nginx.conf,url重寫現在工作!!
server {
listen 80;
server_name git.mengzhuo.org;
root /var/www/htdocs/cgit;
location ~* ^.+\.(css|png|ico)$ {
expires 30d;
}
location / {
index cgit.cgi;
fastcgi_param SCRIPT_FILENAME $document_root/cgit.cgi;
fastcgi_pass unix:/var/run/fcgiwrap.socket;
fastcgi_param HTTP_HOST $server_name;
fastcgi_param PATH_INFO $uri;
fastcgi_param QUERY_INFO $uri;
include "fastcgi_params";
}
access_log /var/log/nginx/cgit_access.log;
error_log /var/log/nginx/cgit_error.log warn;
}
設置virtual-root=/
in / etc / cgitrc為我解決了這個問題。
這與Nginx沒有任何關系,生成URL的代碼中存在一個錯誤。
在http://git.example.org/foo頁面上,您有一個鏈接寫為:
<a href="foo/commit">Click to commit</a>
它應該是服務器絕對的:
<a href="/foo/commit">Click to commit</a>
或者相對於當前目錄為:
<a href="commit">Click to commit</a>
大概在代碼中你初始化cgit的地方,你在foo
中你應該傳入/foo
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.