
只需在我的伺服器上設定 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 中,由 try_files 完成的對位置 @wikka 的重寫會短路對該區塊的調用location ~ \.php
將區塊內的所有內容重新複製location ~ \.php
到location @wikka
解決了我的問題。更多關於http://blog.dot.mg/?t=20
答案3
我剛完成了舊 Wikka 安裝與1.3.5
Apache 之間的遷移和 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;
}
}