wikkawik​​i の nginx の書き換え

wikkawik​​i の nginx の書き換え

サーバーに WikkaWiki をセットアップしたところです。リンクを から に移動するようにしましwiki.mysite.info/wikka.php?wakka=Startwiki.mysite.info/DotMG

私は彼らのガイドに従ってみましたhttp://docs.wikkawik​​i.org/ModRewriteしかし、不完全で時代遅れのようです。さらに、バージョン1.3.2 base_urlファイルから手動で設定することもできませんwikka.config.php

私は WikkaWiki のバージョンを使用しています1.3.2。私の 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...

さらに、Wiki 上のリンクには が付いているwikka.php?wakka=ため、Wiki 内を移動するたびに に戻ります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 経由でここに来ましたが、自分で解決策を見つけなければならなかったにもかかわらず、このスレッドは 1 年以上前のものですが、検索エンジン経由でここに来た他の人々のために、私の解決策をここに投稿する必要があると思います。

nginxでは、try_filesによって@wikkaの場所への書き換えがブロックへの呼び出しを短絡していると思います。location ~ \.php

ブロック内のすべてをコピーし直すlocation ~ \.phpと、location @wikka問題は解決しました。詳細はhttp://blog.dot.mg/?t=20

答え3

1.3.5古い W​​ikka インストールをApache から Nginx/php-fpm に移行し終えました。

参考までに、適切な書き換えルールを含む vhost 定義を以下に示します。

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;
    }
}

関連情報