Apache 的 URL 重寫功能由 mod_rewrite 模組提供,廣泛應用於 SEO 優化、靜態化偽靜態、存取控制等場景。本文詳細說明如何檢查模組狀態、啟用模組、配置目錄權限,並驗證生效。
主流 Linux 發行版的 Apache 2.x 通常已內建 mod_rewrite.so。請開啟 httpd.conf 搜尋:
LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so
# 或
LoadModule rewrite_module lib/apache2/modules/mod_rewrite.so
若行首有 # 號請移除。模組檔案常見路徑:
/usr/lib/apache2/modules//usr/lib/httpd/modules/執行以下指令查看已載入模組:
# /usr/sbin/httpd -M
輸出中若出現 rewrite_module (shared) 即表示模組已就緒。
URL 重寫依賴 .htaccess 檔案,必須在對應目錄啟用 AllowOverride All。
DocumentRoot "/opt/www"
<Directory "/opt/www">
Options FollowSymLinks
# AllowOverride None ← 註解掉預設值
AllowOverride All ← 必須設為 All
Order allow,deny
Allow from all
</Directory>
說明:AllowOverride All 允許 .htaccess 覆蓋伺服器設定,包含重寫規則。若設為 None,.htaccess 將被忽略,重寫失效。
依發行版執行對應指令:
# /etc/rc.d/rc.httpd restart# /etc/init.d/apache2 restart# /etc/init.d/httpd restartAllowOverride All、.htaccess 存在且語法正確、模組已載入。.htaccess 語法錯誤,或 RewriteRule 導致無限循環。httpd.conf,請確認主機商是否已啟用 mod_rewrite 並允許 AllowOverride。成熟 CMS(Drupal、Joomla、WordPress)皆內建 .htaccess 重寫規則,僅需在後台開啟「URL 重寫」或「偽靜態」選項即可使用。
完成上述步驟後,Apache 的 URL 重寫功能即可正常運作,為網站提供靈活的 URL 管理能力。