2011-03-04 88 views
2

我和我的.htaccess很奇怪的.htaccess重寫問題

一個奇怪的問題,我有以下重寫規則

#REMOVE TRAILING SLASH 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.+)/$ $1 [R=301,L] 

#REWRITES 
RewriteRule ^clients(/)?$ /views/pages/clients.php [L] 
RewriteRule ^about(/)?$ /views/pages/about.php [L] 
RewriteRule ^contact(/)?$ /views/pages/contact.php [L] 
RewriteRule ^mobile(/)?$ /views/pages/tags.php?tag=mobile [L] 
RewriteRule ^tablet(/)?$ /views/pages/tags.php?tag=tablet [L] 

這些規則做工作,但他們兩個奇怪的行爲。

RewriteRule ^clients(/)?$ /views/pages/clients.php [L] 
RewriteRule ^mobile(/)?$ /views/pages/tags.php?tag=mobile [L] 

「客戶端」重寫規則總是得到一個尾部斜線。

的「移動」重寫規則重寫爲http://www.mydomain.com/mobile/?tag=mobile

我需要解決這個問題,因爲這些規則導致到影響我的搜索引擎優化的性能帶來不必要的重定向

我覺得這很奇怪,因爲他們是類同的其他的,他們做得很好。

另一個bizar事實:在我的本地的重寫行事就好了,這是我的生產服務器上他們的行爲奇怪

而且我剛剛發現以下重寫規則採取相應的行動:

RewriteRule ^client(/)?$ /views/pages/clients.php [L] 

這一個不會添加結尾的斜槓,因此它必須是規則左側的「客戶端」一詞。

這條規則的行爲罰款也

RewriteRule ^mobiles(/)?$ /views/pages/mobile.php [L] 

所以,當我使用「客戶」,並在規則的左側,「移動」,它的行爲奇怪。當我使用'客戶端'和'手機'時,他們表現得很好。

難道'客戶'和'移動'是保留字或什麼?

回答

0

如果生產服務器上有一個clients目錄,則可能會導致您遇到重寫問題。 (可能存在與生產服務器上的移動目錄存在類似的問題,但如果不親自進行一些測試,則無法確定。)