переписывание nginx для wikkawiki

переписывание nginx для wikkawiki

Только что установил WikkaWiki на своем сервере, пытаюсь сделать так, чтобы ссылки вели wiki.mysite.info/wikka.php?wakka=Startиз wiki.mysite.info/DotMG.

Я попробовал следовать их руководствуhttp://docs.wikkawiki.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 перезапись в location @wikka, выполняемая try_files, замыкает вызов блокаlocation ~ \.php

Повторное копирование всего из блока location ~ \.phpв location @wikkaрешило для меня проблему. Подробнееhttp://blog.dot.mg/?t=20

решение3

Я только что закончил миграцию старой установки Wikka на 1.3.5Apache и с него на 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;
    }
}

Связанный контент