問題是這樣的:我習慣在博客地址后面直接加"wp-admin"敲回車進入WordPress后臺,但是進去以后發現不管我點任何一個管理子項,一律404(找不到頁面),瞬間我就囧了,這是神馬狀況。。。
仔細看了一下管理子項的鏈接,發現他們全是類似"//www.49028c.com/blog/edit.php"這樣的,關鍵就在于他們都少了"/wp-admin/"這條路徑,路徑都不對了,肯定404唄。。。
知道問題在哪就簡單了,而且答案肯定還是在Nginx的重定向規則上,但是我不知道怎么改,但是我還知道WordPress官方肯定已經解決了,所以我還是很淡定地去查文檔了。。。got it
http://codex.wordpress.org/Nginx
# Add trailing slash to */wp-admin requests.
rewrite /wp-admin$ $scheme://$host$uri/ permanent;
果然給我在codex上找到了解決方案,就是簡單地加一行斜杠重定向而已,方法綜述如下:
1、登錄shell,vim編輯Nginx配置目錄(一般是在/usr/local/nginx/conf/)下的"wordpress.conf",當然如果你像我一樣用的是自己寫的conf文件,那就改對應的那個重定向配置文件就好。
vim /usr/local/nginx/conf/wordpress.conf
2、把官方給的那一行加到文件最后面就行了
location /blog/ {if ($host != 'www.49028c.com' ) {rewrite ^/(.*)$ //www.49028c.com/$1 permanent;}if (-f $request_filename/index.html){rewrite (.*) $1/index.html break;}if (-f $request_filename/index.php){rewrite (.*) $1/index.php;}if (!-f $request_filename){rewrite (.*) /blog/index.php;}}rewrite /wp-admin$ $scheme://$host$uri/ permanent;
3、:wq保存重啟nginx即可
其實你要是懶的話,直接用 "echo >>" 追加就行了= =
PS:據說 nginx不會自動在請求的最后加上一個斜線,不會自動判斷請求的是一個文件還是一個目錄。網上搜索 nginx 斜線,都會提到需要在請求的最后加上這個斜杠。
網上大部資料是這樣寫的 :
在nginx/conf/vhost.conf中的 location / {}的index index.html后面加上
if (-d $request_filename) { rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;}
但如果你的網址后面帶了端口的話,那么轉向時還是會出現403錯誤。
即 $host 變量把端口弄沒了,改成 $http_host 變量即可
改成如下寫法即解決了所有問題
if (-d $request_filename) { rewrite ^/(.*)([^/])$ http://$http_host/$1$2/ permanent;}