設定 Nginx 支援 WordPress 固定連結
核心邏輯說明
在 Nginx 中,我們需要透過 try_files 指令,告訴伺服器:
- 先找尋是否有對應的實體檔案。
- 若無,尋找是否有對應的實體目錄。
- 若皆無,則將請求全部交給 WordPress 的核心入口
index.php處理。
Nginx 設定檔範例 (.conf)
請編輯你的網站設定檔(路徑通常在 /etc/nginx/sites-available/your-site.conf),並確保 location / 區塊包含以下內容:
server {
listen 80;
server_name yourdomain.com;
root /var/www/html;
index index.php index.html index.htm;
# --- 關鍵設定開始 ---
location / {
# 嘗試找檔案、找目錄,最後交給 index.php 並帶入原本的參數
try_files $uri $uri/ /index.php?$args;
}
# --- 關鍵設定結束 ---
# 處理 PHP 請求 (請依據你的 PHP 版本調整 sock 路徑)
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
}
# 安全性設定:禁止存取隱藏檔案
location ~ /\. {
deny all;
}
}
操作步驟
1. WordPress 後台設定
前往 設定(Settings) > 固定連結(Permalink),選擇你偏好的格式(如:日期、文章名稱),然後點擊「儲存」。

2. 更新 Nginx 設定
在伺服器端修改完上述 .conf 檔案後,務必執行以下指令:
server {
listen 80;
server_name yourdomain.com;
root /var/www/html;
index index.php index.html index.htm;
# --- 關鍵設定開始 ---
location / {
# 嘗試找檔案、找目錄,最後交給 index.php 並帶入原本的參數
try_files $uri $uri/ /index.php?$args;
}
# --- 關鍵設定結束 ---
# 處理 PHP 請求 (請依據你的 PHP 版本調整 sock 路徑)
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
# 安全性設定:禁止存取隱藏檔案
location ~ /\. {
deny all;
}
}
檢查語法
sudo nginx -t
重新載入
sudo systemctl reload nginx