前情提要:本篇使用 EC2 虛擬主機以及 Ubuntu 作業系統,若使用不同配置可參考相關教學來修改對應的設定。

在 WordPress 設定中,固定網址選項提供了預設、日期與名稱、月份與名稱、數值式、文章名稱、自訂結構等選項。其中網路上許多文章都大力推薦使用「文章名稱」來做為自訂網址結構,讓網址能提高美感。不過使用者做這樣的設定後,常常會遇到 404 錯誤,這時候很可能是伺服器 Rewrite 功能沒有正確設定。

wordpress permalink.jpg

如果真的不幸遇到 404 Not Found 的話,就趕快檢查一下伺服器設定吧!

首先,確定 mod_rewrite 已經開啟。

Apache 的 mod_rewrite 功能預設是關閉的,透過以下指令來啟動覆寫功能。

sudo a2enmod rewrite

啟動 mod_rewrite 功能後必須重新啟動 Apache

sudo service apache2 restart

接著,修改 Apache 的主要設定檔。

如果伺服器 Apache 配置多個網域,請找到 WordPress 對應的設定檔。如果沒有修改過,設定檔在 Ubuntu 的預設路徑為:

/etc/apache2/sites-available/000-default.conf

使用 vi 或 nano 指令編輯檔案,主要設定檔的開頭應該是 <VirtualHost *:80> 在它上方加入這段:

<Directory "/var/www/wordpress/">
    AllowOverride All
</Directory>

記得將 /var/www/wordpress/ 換成 WordPress 安裝的根目錄路徑
修改完成後儲存檔案,並再次重新啟動 Apache:

sudo service apache2 restart

最後,修改 .htaccess 檔案

一般來說 WordPress 可以自動修改 .htaccess 檔案,但是遇到權限錯誤的問題也是常有的事,如果有這種狀況,WordPress 應該會提供設定好的 .htaccess 檔案內容,可以手動以 FTP 在網站根目錄去新增 .htaccess 檔案。

由於 .htaccess 檔案為隱藏檔,新增時可以先將 FTP 軟體的顯示設定打開,例如使用 FileZilla 請從工具列-伺服器-強制顯示隱藏檔案。以本篇 WordPress 自動產出的範例中 .htaccess 內容如下:

# BEGIN WordPress

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

請以 WordPress 產生的為準。或是我們也可以新增空白的 .htaccess 檔案,並將權限暫時改為 777 rwxrwxrwx,讓 WordPress 能順利修改檔案,當自動設定完成後,再將 .htaccess 權限改回 644 rw-r–r– 即可。

如果以上都順利設定,在 WordPress 自訂的網址結構應該就能正常顯示啦!

wordpress permalink.png

這樣的網址是不是乾淨又美觀呢?