相信熟悉Web Server的人一定熟悉Apahce。相信熟悉Apahce的人一定知道URL Rewrite。Apache的mod_rewrite模塊,可以幫助人們構造出各種各樣美化后的URL。在Apache中使用URL Rewrite,可以有多種方式:一種是直接在httpd.conf中添加相應rewriterule(重寫規(guī)則),另一種是在網站根目錄下的.htaccess中添加rewriterule(重寫規(guī)則)。但是,需要注意的是,在這兩個文件中添加到URL重寫規(guī)則略有不同。而這些不同,對于不熟悉的人來說,很可能會困擾許久。
在Httpd.conf中:
(1)Request URI的開頭必須以斜線開始;
(2)在尋找Cache文件的時候,必須在開頭加上斜線;
(3)在使用-f或者!-f的時候,必須在開頭加上斜線。
在.htaccess中,情況完全相反:
(1)Request URI的開頭不能有斜線;
(2)在尋找Cache文件的時候,不能在開頭加上斜線;
(3)在使用-f或者!-f的時候,不能在開頭加上斜線。
簡單而言,就是在httpd.conf中,重寫前后的URL在使用絕對路徑時需要添加斜線“/”,表示從網站根目錄開始;而在.htaccess中,則不需要。以下兩個簡單的例子:
httpd.conf
RewriteRule ^/$ /cache/index.html [QSA]
RewriteRule ^/([^.]+)$ /cache/$1.html [QSA]
RewriteCond /home/root/%{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.php [QSA,L]
.htaccess
RewriteRule ^$ cache/index.html [QSA]
RewriteRule ^([^.]+)$ cache/$1.html [QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
或許還有更多的不同,大家也可以自己關注研究一下。