Apache URL rewrite 的簡單設定三步曲
先簡單介紹 Apache URL Rewrite 的功能。假如我們有一個像老太婆的裹腳布一樣長的 URL 如下:
http://www.foo.com/productDetail.php?productID=3&Cateogry=1
透過 .htaccess 的重寫規則,可以把它簡化成以下
http://www.foo.com/productDetail/3
這樣一來不但簡潔,搜尋引撆的機器人也可以把乾淨的網址列出給搜尋結果。但編寫 .htaccess 檔的 regular expression 並不在本文章的範圍內。如果有興趣可以去 http://httpd.apache.org/docs/2.0/misc/rewriteguide.html
問題:
在打開 Clean URLs 的功能後,如果點選連結會出現 404 Error。可以依下面的三個步驟確定在伺服器方面有沒有把設定弄對。我們一樣以 Ubuntu 14.04.1 LTS 為基礎。
1. 開啟 Apache URL Rewrite 功能
要開啟 Apache URL Rewrite,需要打入下面指令。
sudo a2enmod rewrite
2. 確定文件目錄有支援 AllowOverride
cd /etc/apache2/
sudo nano apache2.conf
按 Ctrl + W 找下面這段。把 AllowOverride 從 None 改成 All
<Directory />
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
3. 確定隱藏的 .htaccess 有被正確的 copy 到文件的目錄裡
假設你的 wordpress 安裝是在 /var/www/html/wordpress 裡。 先切換到那目錄再打 ls -l 就可以看到 .htaccess 有沒有在那裡了。 最後如果您有修改上列的 1 or 2, 要重新啟動 apache server. 鍵入以下即可。
sudo service apache2 restart