2011-05-11 42 views
3

當我在我的htaccess文件使用:.htaccess的正則表達式問題重定向

RewriteCond %{HTTP_HOST} ^site\.com$ [NC] 
RewriteRule ^(.*)$ http://www.site.com/ [R=301] 

RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteRule ^(.+)$ $1.php [NC,L] 

如果你去site.com加www重定向到www.site.com/.php而不是www.site。 COM。

有什麼想法?

謝謝!

回答

1

我結束了加$ 1重寫規則^修復它(。*)$ http://www.site.com/ $ 1 [R = 301,L]

感謝您的幫助。

1

也許這是您的舊.htaccess的瀏覽器緩存?嘗試清空緩存,或使用其他瀏覽器(或可能是Priavte Browsing)。

+0

我已經這樣做了,我認爲它與這個RewriteCond%{SCRIPT_FILENAME}有關!-f RewriteRule ^(。+)$ $ 1.php [NC,L] – 2011-05-11 20:44:25

1

我認爲在根SCRIPT_FILENAME將是「/」,這不會被認爲是一個有效的文件,並絆倒!-f導致規則被應用。

由於/是正則表達式抓到一個字符就會重寫它www.site.com/.php

+0

那麼我該如何解決它? – 2011-05-12 04:26:55

+0

我認爲這會實現你要找的東西? RewriteCond%{SCRIPT_FILENAME}!-d RewriteCond%{SCRIPT_FILENAME}!-f RewriteRule ^(。+)$ $ 1.php [NC,L] – 2011-05-12 16:24:10

1

嘗試添加「最後」加治「L」:

RewriteRule ^(.*)$ http://www.site.com/ [R=301,L] 
相關問題