2012-06-20 80 views
5

我的.htaccess文件如下:mod_rewrite的添加php擴展

Options -Multiviews 
RewriteEngine On 
RewriteCond %{HTTP_HOST} ^example.com 
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ $1.php 

,我遇到的問題是,當我嘗試不帶www訪問我的網站。前綴,.php擴展名被添加到地址,這通常會導致問題。例如,如果我嘗試使用地址example.com訪問我的主頁,則該地址將轉換爲www.example.com/.php。我想要www。要添加,但最後添加的.php擴展名只會導致錯誤。我該如何解決?

+0

這是不安全的重寫方式「/x"->"/x.php」 –

+2

RewriteRule不能在瀏覽器地址欄中更改URL。您需要'[R]'(重定向)標誌將瀏覽器重定向到新的URL。 –

+1

什麼是刪除php擴展名? –

回答

1

RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

卸下L向[R=301,L],意思是 「最後」,意思是 「停止這一個後處理的RewriteRules」。

301也意味着「永久重定向」。在這種情況下,您的瀏覽器將記住永久重定向。是否有可能您有一個版本的重寫規則,轉到您的URL,然後更改它?清除緩存或嘗試其他瀏覽器。

+0

我試過這樣做,但沒有奏效。問題仍然存在:當我進入mysite.com/main時,我立即轉到www.mystie.com/main.php,但我不想要.php擴展名。 – user532493

+0

編輯我的答案。注意301,重定向可以緩存在瀏覽器中。 –

+0

謝謝你的幫助。我嘗試了三種不同的瀏覽器並清除了所有這些緩存,但仍然遇到同樣的問題。 – user532493

0

文件第4行的「L」標誌表示「last」,即它不會處理更多規則。嘗試刪除L.

+0

我試過這樣做,但沒有奏效。問題仍然存在:當我進入mysite.com/main時,我立即轉到www.mystie.com/main.php,但我不想要.php擴展名。 – user532493