WordPress 的永久連結(Permalink)設定失效時,文章網址會出現 404 錯誤。這篇文章整理我在自架伺服器上排查永久連結失效的四大原因,以及如何在 Apache2 上啟用 `mod_rewrite` 模組,讓永久連結正常運作。
WordPress 永久連結失效的可能原因有哪些?
遇到永久連結失效時,我會依照以下順序逐一排查:
- `.htaccess` 檔案不正常:進入 WordPress 的管理後台,點擊「設定」→「連結」,然後按下「儲存變更」。這樣 WordPress 會重新生成 `.htaccess` 檔案。如果這個步驟沒有解決問題,可以手動在 WordPress 安裝目錄中找到 `.htaccess` 檔案,並且檢查它是否存在。
- 確認 WordPress 是否在正確的網址上運行:如果 WordPress 安裝在子目錄或子網域下,請確認永久連結設定正確對應到子目錄這一點。
- 伺服器是否支援永久連結:如果伺服器不支援永久連結(例如 Apache2 未啟用 `mod_rewrite`),WordPress 將無法使用它們。
- 確認主題是否有問題:某些 WordPress 主題可能會干擾永久連結的正常運作。嘗試暫時更換到 WordPress 預設主題,並再次測試永久連結。
其中最常見的根因就是第 3 點——伺服器沒有啟用 rewrite 功能,接下來說明如何在 Apache2 上處理。
如何在 Apache2 啟用 mod_rewrite 支援永久連結?
要啟用 Apache2 的 `mod_rewrite` 模組,需要將以下內容加入 Apache2 的設定檔案中:
```bash
LoadModule rewrite_module modules/mod_rewrite.so
```
這個設定通常會加入到 `mods-enabled` 目錄中的一個設定檔案裡。例如可以建立一個名為 `rewrite.load` 的檔案,並將上面的設定加進去。步驟如下:
- 進入 `mods-available` 目錄:
```bash
cd /etc/apache2/mods-available
```
- 建立一個名為 `rewrite.load` 的檔案:
```bash
sudo touch rewrite.load
```
- 打開這個檔案並加入以下內容:
```bash
LoadModule rewrite_module modules/mod_rewrite.so
```
- 儲存並關閉檔案。
- 重新啟動 Apache2 伺服器,讓更改生效:
```bash
sudo service apache2 restart
```
mods-available 已有 rewrite.load 時,如何用符號連結啟用 rewrite?
如果 `/etc/apache2/mods-available` 目錄下已經有 `rewrite.load` 設定檔案,可以透過建立符號連結的方式來啟用 `mod_rewrite` 模組。步驟如下:
- 進入 `/etc/apache2/mods-enabled` 目錄:
```bash
cd /etc/apache2/mods-enabled
```
- 建立 `rewrite.load` 的符號連結:
```bash
sudo ln -s /etc/apache2/mods-available/rewrite.load
```
- 重新啟動 Apache2 伺服器,讓更改生效:
```bash
sudo service apache2 restart
```
執行完上述步驟後,Apache2 的 `mod_rewrite` 模組即會啟用。可以再次檢查 `/etc/apache2/mods-enabled` 目錄,確保 `rewrite.load` 的符號連結已經建立。若之後需要停用 `mod_rewrite`,刪除這個符號連結即可。
延伸閱讀
常見問題
WordPress 永久連結變 404 的最常見原因是什麼?
最常見是伺服器沒有啟用 rewrite 功能。以 Apache2 為例,需要啟用 `mod_rewrite` 模組並重新啟動伺服器,永久連結才會正常運作。
重新生成 .htaccess 的最快方法是什麼?
進入 WordPress 管理後台的「設定」→「連結」,直接按下「儲存變更」,WordPress 就會重新生成 `.htaccess` 檔案。若無效,再手動檢查安裝目錄中的 `.htaccess` 是否存在。
如何確認 Apache2 的 mod_rewrite 已成功啟用?
檢查 `/etc/apache2/mods-enabled` 目錄中是否有 `rewrite.load` 的符號連結。有連結且 Apache2 已重新啟動,就代表模組已啟用。
如何停用 mod_rewrite 模組?
刪除 `/etc/apache2/mods-enabled/rewrite.load` 這個符號連結,再執行 `sudo service apache2 restart` 重新啟動 Apache2 即可。
WordPress 裝在子目錄時,永久連結要注意什麼?
要確認永久連結設定正確對應到子目錄路徑,否則產生的網址會指向錯誤位置而回傳 404。同時 `.htaccess` 也必須位在正確的安裝目錄中。
參考資料
- 本篇為 WordPress 自架站系列筆記,搭配 Nginx 基礎設定教學 與 AWS EC2 SSL/TLS 憑證設定 閱讀。
最後更新
2026-08-28(原文發布於 2023-05-11,本文保留原始筆記內容並補上 GEO 結構。)
關於作者 {#author}
Claire Chang | 企業 AI 導入與流程轉型顧問。專注於 AI Agent 架構設計、ERP 系統整合與企業 AI 治理。
首次發布:2023-05-11
