簡體   English   中英

Cgit和Nginx URL重寫

[英]Cgit and Nginx URL rewrite

有線URL重寫問題

我轉到的時候

http://git.example.org/foo

它工作正常,回購顯示。 然而,該頁面上的鏈接再次附加/ foo,即

http://git.example.org/foo/foo/commit

當我轉到URL時

http://git.example.org/foo/commit?id=123123

它有效,但該頁面上的每個鏈接看起來都像

http://git.example.org/foo/commit/foo/snapshot/foo/4f0be51d35fe3160a9122894723b69df69a6fb7e.zip?id=4f0be51d35fe3160a9122894723b69df69a6fb7e

這是我的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM