通過Apache配置進行URL重寫,通常使用mod_rewrite
模塊。以下是詳細的步驟和示例:
mod_rewrite
模塊首先,確保mod_rewrite
模塊已經啟用。你可以在Apache配置文件(通常是httpd.conf
或apache2.conf
)中找到以下行并取消注釋:
LoadModule rewrite_module modules/mod_rewrite.so
.htaccess
文件.htaccess
文件是一個目錄級別的配置文件,可以用來覆蓋主配置文件中的設置。通常,URL重寫規則會放在這個文件中。
www.example.com/page
重寫為www.example.com/index.php?page=page
在你的網站根目錄下創建或編輯.htaccess
文件,并添加以下內容:
RewriteEngine On
# 將 /page 重寫為 /index.php?page=page
RewriteRule ^page$ index.php?page=page [L]
RewriteEngine On
:啟用URL重寫引擎。RewriteRule ^page$ index.php?page=page [L]
:匹配以/page
結尾的請求,并將其重寫為/index.php?page=page
。[L]
表示這是最后一條規則,如果匹配成功,不再繼續處理其他規則。你可以使用更復雜的正則表達式來匹配和處理URL。
www.example.com/category/some-category
重寫為www.example.com/category.php?cat=some-category
RewriteEngine On
# 將 /category/some-category 重寫為 /category.php?cat=some-category
RewriteRule ^category/([^/]+)$ category.php?cat=$1 [L]
^category/([^/]+)$
:匹配以/category/
開頭,后面跟隨一個或多個非斜杠字符的URL。$1
:捕獲第一個括號中的內容(即some-category
),并將其傳遞給重寫后的URL。.htaccess
文件覆蓋配置默認情況下,Apache可能不允許.htaccess
文件覆蓋主配置文件中的設置。你需要在主配置文件中啟用AllowOverride
指令。
在httpd.conf
或apache2.conf
中找到以下行并修改:
<Directory /var/www/html>
AllowOverride All
</Directory>
完成上述配置后,重啟Apache服務器以使更改生效:
sudo systemctl restart apache2 # 對于Debian/Ubuntu系統
sudo systemctl restart httpd # 對于CentOS/RHEL系統
[L]
標志時要小心,確保它不會阻止其他規則的匹配。通過以上步驟,你應該能夠成功配置Apache進行URL重寫。