在.htaccess文件中寫RewriteRule無效的問題的解決


近來在Apache Rewrite 擬靜態配置時,遇到個問題。寫的如下:

RewriteEngine on
RewriteRule ^/t_(.*)/$ /test.php?id=$1

保存在httpd.conf文件中時,發現可以起作用。

而寫在.htaccess文件中,死活不起作用。經過研究發現,里面隨便填寫字符,服務器報500錯誤,而且進行定向也沒問題,所以不是訪問不到的問題,初步猜測應該是語法的問題。后來在百度“RewriteRule  .htaccess”時 找到一篇文章,  文章標題:《URL RewriteRule在httpd.conf和.htaccess中的不同點》 看到了:

需要注意的是,在這兩個文件中添加到URL重寫規則略有不同。而這些不同,對於不熟悉的人來說,很可能會困擾許久。

在Httpd.conf中: (1)Request URI的開頭必須以斜線開始; (2)在尋找Cache文件的時候,必須在開頭加上斜線; (3)在使用-f或者!-f的時候,必須在開頭加上斜線。

在.htaccess中,情況完全相反: (1)Request URI的開頭不能有斜線; (2)在尋找Cache文件的時候,不能在開頭加上斜線; (3)在使用-f或者!-f的時候,不能在開頭加上斜線。

簡單而言,就是在httpd.conf中,重寫前后的URL在使用絕對路徑時需要添加斜線“/”,表示從網站根目錄開始;而在.htaccess中,則不需要。

 把.htaccess文件中的/去掉  測試OK了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM