相信熟悉Web Server的人一定熟悉Apahce。相信熟悉Apahce的人一定知道URL Rewrite。Apache的mod_rewrite模塊,可以幫助人們構(gòu)造出各種各樣美化后的URL。在Apache中使用URL Rewrite,可以有多種方式:一種是直接在httpd.conf中添加相應(yīng)rewriterule(重寫(xiě)規(guī)則),另一種是在網(wǎng)站根目錄下的.htaccess中添加rewriterule(重寫(xiě)規(guī)則)。但是,需要注意的是,在這兩個(gè)文件中添加到URL重寫(xiě)規(guī)則略有不同。而這些不同,對(duì)于不熟悉的人來(lái)說(shuō),很可能會(huì)困擾許久。
在Httpd.conf中:
(1)Request URI的開(kāi)頭必須以斜線開(kāi)始;
(2)在尋找Cache文件的時(shí)候,必須在開(kāi)頭加上斜線;
(3)在使用-f或者!-f的時(shí)候,必須在開(kāi)頭加上斜線。
在.htaccess中,情況完全相反:
(1)Request URI的開(kāi)頭不能有斜線;
(2)在尋找Cache文件的時(shí)候,不能在開(kāi)頭加上斜線;
(3)在使用-f或者!-f的時(shí)候,不能在開(kāi)頭加上斜線。
簡(jiǎn)單而言,就是在httpd.conf中,重寫(xiě)前后的URL在使用絕對(duì)路徑時(shí)需要添加斜線“/”,表示從網(wǎng)站根目錄開(kāi)始;而在.htaccess中,則不需要。以下兩個(gè)簡(jiǎn)單的例子:
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]
或許還有更多的不同,大家也可以自己關(guān)注研究一下。