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

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

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

保存在httpd.conf文件中時,發現能夠起做用。測試

而寫在.htaccess文件中,死活不起做用。通過研究發現,裏面隨便填寫字符,服務器報500錯誤,並且進行定向也沒問題,因此不是訪問不到的問題,初步猜想應該是語法的問題。後來在百度「RewriteRule  .htaccess」時 找到一篇文章,  文章標題:《URL RewriteRule在httpd.conf和.htaccess中的不一樣點》 看到了:網站

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

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

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

簡單而言,就是在httpd.conf中,重寫先後的URL在使用絕對路徑時須要添加斜線「/」,表示從網站根目錄開始;而在.htaccess中,則不須要。百度

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

相關文章
相關標籤/搜索