非常奇怪.htaccess重写问题

时间:2011-03-04 07:38:10

标签: .htaccess url-rewriting

我的.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]

'clients'重写规则总是得到一个斜杠。

'移动'重写规则重写为http://www.mydomain.com/mobile/?tag=mobile

我需要解决此问题,因为这些规则会导致不必要的重定向,从而影响我的SEO性能

我发现这很奇怪,因为它们与其他类似,并且它们做得很好。

另一个奇怪的事实:在我的本地主机上,重写行为很好,它在我的生产服务器上,他们表现得很奇怪

此外,我发现以下重写规则也是相应的:

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

这个没有添加尾部斜杠,所以它必须是规则左侧带有“clients”字样的东西。

这条规则也很好

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

所以,当我在规则的左侧使用“客户端”和“移动”时,它会很奇怪。当我使用“客户”和“手机”时,他们表现得很好。

可以说'客户'和'手机'是保留字还是什么?

1 个答案:

答案 0 :(得分:0)

如果生产服务器上有clients目录,则可能会导致您在重写时遇到问题。 (生产服务器上存在移动目录可能存在类似的问题,但我不能确定自己不做一些测试。)