#0

 

在安裝好Wordpress後,每個頁面的網址預設都是 ?p=123 等等格式

若是在調整固定網址設定遇到404的錯誤時

有可能就是伺服端的Rewrite功能沒有被設定好

 

經過搜尋爬過一些文章後,大半都是針對Apache的Rewrite規則做修改

至於Nginx,試過了一些對岸網站提供的解法

也是都不見成效,只是從404變成了File Not Found的錯誤而已

 

然而,找到了國外一些網站後,總算找到非常有用的解法

而且程式碼也就短短的幾行:

 

打開Wordpress所屬的Nginx目錄設定(不一定是nginx.conf,每個人設定vhost的習慣不同)

在 location ~.php$ { 前面加上:

       location / {
try_files $uri $uri/ /index.php?$args;
}
# Add trailing slash to */wp-admin requests.
rewrite /wp-admin$ $scheme://$host$uri/ permanent;

假設您的WP是放在同一個域名下的子資料夾的話(像是 http://yourdomain.com/TEST/wordpress

語法必需修改成以下再加上:

       location /TEST/wordpress {
try_files $uri $uri/ /TEST/wordpress/index.php?$args;
}
# Add trailing slash to */wp-admin requests.
rewrite /TEST/wordpress/wp-admin$ $scheme://$host$uri/ permanent;

 

整體來說,這整段在nginx的設定會長這樣:

server {
listen 80;
server_name yourdomain.com;
location /TEST/wordpress {
try_files $uri/ $uri/ /TEST/wordpress/index.php?$args;
}
# Add trailing slash to */wp-admin requests.
rewrite /TEST/wordpress/wp-admin$ $scheme://$host$uri/ permanent;
location ~.php$ {
include /etc/nginx/fastcgi.conf;
fastcgi_pass unix:/var/run/php-fpm.socket;
}
access_log /var/log/nginx/demo_access_log main;
error_log /var/log/nginx/demo_error_log info;
root /home/demo/;
}

 

參考來源:nginx and wordpress permalink settings

測試環境:Gentoo Linux + Nginx 1.4.4 + PHP 5.5.4 + WordPress 4.1.2

發表迴響