wikikawik​​ 的 nginx 重寫

wikikawik​​ 的 nginx 重寫

只需在我的伺服器上設定 WikkaWiki,我一直在嘗試將連結從wiki.mysite.info/wikka.php?wakka=Start轉到wiki.mysite.info/DotMG.

我嘗試按照他們的指南進行操作http://docs.wikkawik​​i.org/ModRewrite,但它似乎不完整且過時。此外,從版本開始1.3.2 base_url甚至無法從wikka.config.php文件中手動配置。

我正在使用1.3.2WikkaWiki 版本。我的 nginx 虛擬主機檔案包含:

server {
    listen 80;

    server_name wiki.mysite.info;

    root /usr/share/nginx/wikka/;

    access_log /usr/share/nginx/.access/wikka;
    error_log /usr/share/nginx/.error/wikka error;

    location / {
            index index.php;
            try_files $uri $uri/ @wikka;
    }

    location @wikka {
            rewrite ^(.*/[^\./]*[^/])$ $1/ last;
            rewrite ^(.*)$ /wikka.php?wakka=$1 last;
    }

    location ~* \.php$ {
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            include /etc/nginx/fastcgi_params;
    }
}

到目前為止它可以工作,我可以轉到它wiki.mysite.info/APage並顯示該頁面,但是它並不在所有頁面上工作,有時瀏覽器只是下載該頁面(由於某種原因它總是下載該Start頁面)。

另外,當我去wiki.mysite.info/它下載wikka.php文件時...

此外,維基百科上的連結有,wikka.php?wakka=所以每當我瀏覽維基百科時,它都會回到原來的狀態wiki.mysite.info/wikka.php?wakka=APage

我認為我的東西有問題,rewrite但我不能肯定。

內容fastcgi_params

fastcgi_param   QUERY_STRING            $query_string;
fastcgi_param   REQUEST_METHOD          $request_method;
fastcgi_param   CONTENT_TYPE            $content_type;
fastcgi_param   CONTENT_LENGTH          $content_length;

fastcgi_param   SCRIPT_FILENAME         $request_filename;
fastcgi_param   SCRIPT_NAME             $fastcgi_script_name;
fastcgi_param   REQUEST_URI             $request_uri;
fastcgi_param   DOCUMENT_URI            $document_uri;
fastcgi_param   DOCUMENT_ROOT           $document_root;
fastcgi_param   SERVER_PROTOCOL         $server_protocol;

fastcgi_param   GATEWAY_INTERFACE       CGI/1.1;
fastcgi_param   SERVER_SOFTWARE         nginx/$nginx_version;

fastcgi_param   REMOTE_ADDR             $remote_addr;
fastcgi_param   REMOTE_PORT             $remote_port;
fastcgi_param   SERVER_ADDR             $server_addr;
fastcgi_param   SERVER_PORT             $server_port;
fastcgi_param   SERVER_NAME             $server_name;

fastcgi_param   HTTPS                   $server_https;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param   REDIRECT_STATUS         200;

答案1

更改這一行:

fastcgi_param   SCRIPT_FILENAME         $request_filename;

到:

fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;

然後再試一次。

答案2

我是透過 Google 來到這裡的,儘管我必須自己找到解決方案,甚至這個帖子已經存在一年多了,但我想我必須在這裡為搜尋引擎帶來的其他人發布我的解決方案。

我認為在 nginx 中,由 try_files 完成的對位置 @wikka 的重寫會短路對該區塊的調用location ~ \.php

將區塊內的所有內容重新複製location ~ \.phplocation @wikka解決了我的問題。更多關於http://blog.dot.mg/?t=20

答案3

我剛完成了舊 Wikka 安裝與1.3.5Apache 之間的遷移和 Nginx/php-fpm 的遷移。

作為參考,這裡是我的虛擬主機定義以及適當的重寫規則:

server {
    listen      80;
    server_name wiki.domain.com;

    root        /var/www/wiki.domain.com;

    access_log  /var/log/nginx/wiki.domain.com.access.log;
    error_log   /var/log/nginx/wiki.domain.com.error.log;

    location / {
        index       wikka.php;
        try_files   $uri $uri/ @wikka;
    }

    location @wikka {
        rewrite (.*)    /wikka.php?wakka=$1;
    }

    location ~ \.php$ {
        try_files       $uri =404;
        fastcgi_pass    unix:/var/run/php5-fpm.sock;
        fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include         fastcgi_params;
    }
}

相關內容