
내 서버에 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을 통해 여기에 왔고, 스스로 해결책을 찾아야 했고 심지어 이 스레드도 1년이 넘었음에도 불구하고 검색 엔진을 통해 여기로 가져온 다른 사람들을 위해 내 해결책을 여기에 게시해야 한다고 생각합니다.
내 생각에 nginx에서는 try_files가 수행한 @wikka 위치에 대한 재작성이 블록 호출을 단락시키는 것 같습니다.location ~ \.php
블록 내부의 모든 것을 다시 복사하면 문제가 해결되었습니다 location ~ \.php
. location @wikka
자세한 내용http://blog.dot.mg/?t=20
답변3
1.3.5
방금 이전 Wikka 설치를 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;
}
}