|
|
|
|
|
今天想使用.htaccess實現(xiàn)一個rewrite重寫功能,誰知照搬其他網(wǎng)站的.htaccess過來后連網(wǎng)站都訪問不了了,于是研究下使用Apache服務(wù)器的網(wǎng)站是如何用.htaccess實現(xiàn)rewrite重寫的,此文記錄的是本人的一點心得,對新手具有參考作用。
首先檢查是否啟用了 rewrite_module
。如何啟用?打開 httpd.conf
文件,此文件在Apache的安裝目錄下。
對于windows系統(tǒng),默認(rèn)安裝路徑是:
C:\Program Files\Apache Software Foundation\Apache2.2\conf
對于Linux系統(tǒng),可通過 find
命令來搜索:
find / -name httpd.conf
然后把 #LoadModule rewrite_module
前面的 #
號去掉即可。
啟用rewrite_module
最后不要忘了重啟Apache,以使更改生效。
要.htaccess支持rewrite重寫,必須要在前面寫上一句:
RewriteEngine On
否則,.htaccess里的 RewriteRule
語句是無效的。
RewriteEngine On 不能少
溫馨提示:更改.htaccess后立即生效,無需重啟Apache服務(wù)器。
除了上述的兩個原因外,如果 RewriteRule
的正則表達(dá)式有誤,也會導(dǎo)致 rewrite
重寫失敗。因此你需要確保你的正則寫法無誤。你可以寫一個最簡單的 RewriteRule
測試一下重寫功能是否有效。如本案例寫的:
RewriteRule ^test/index.html$ /index.html
意思是訪問 /test/index.html
時會跳到 /index.html
,跳轉(zhuǎn)成功則表示重寫功能有效。
最后附上一條對URL重寫的實例,供大家參考學(xué)習(xí):
RewriteRule ^article/([^/]+)/([^/]+)/([^/]+)/(.*)$ /article.php?issue=$1&edition=$2&id=$3&title=$4 [L,QSA,NC]
這條語句可以對URL
/article.php?issue=1&edition=leeds&id=1394216062&title=apache-falls-to-be-started
進(jìn)行重寫
/article/1/leeds/1394216062/apache-falls-to-be-started
解釋:
L : last,表示已是最后一條規(guī)則,.htaccess文件解析將退出。
QSA : query string append,表示追加請求串,此標(biāo)記強制重寫引擎在已有的替換串中追加一個請求串,而不是簡單的替換。 如果需要通過重寫規(guī)則在請求串中增加信息,就可以使用這個標(biāo)記。
NC : no case,不區(qū)分大小寫,忽略大小寫。
R : redirect,重定向。
F : forbidden,禁止訪問。