刚刚在我的服务器上设置了 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
文件时...
此外,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
我刚刚完成了将旧的 Wikka 安装从1.3.5
Apache 迁移到 Nginx/php-fpm 以及从 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;
}
}