
Только что установил 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.2
WikkaWiki. Мой файл виртуальных хостов 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.5
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;
}
}