2013-05-30 43 views
-2

不工作重写规则RewriteRule无法正常工作。

RewriteRule .*find-a-bar/london/social-eating-house. /find-a-bar/london/the-blind-pig-at-social-eating-house [R=301,L] 

当我键入doamin.com/find-a-bar/london/social-eating-house没有发生

回答

0

要知道,你的正则表达式(一旦周期删除)将匹配您可能不期望的一些URI

something/find-a-bar/london/social-eating-house 

尝试:

^find-a-bar/london/social-eating-house$ 

其中明确规定开始和你想匹配字符串的结尾。

0

RewriteRule。* find-a-bar/london/social-eating-house。 /找到-A-酒吧/伦敦/的盲猪 - 在 - 社会 - 食内部[R = 301,L]是答案

0

不工作的正则表达式:

.*find-a-bar/london/social-eating-house. 

,你可以看到你正在使用.*在这里贪婪匹配,因此mod_rewrite的基础正则表达式引擎可能会使用.*匹配完整正则表达式。最好使用非贪婪匹配模式是这样的(与行的开始和结束锚):

^.*?find-a-bar/london/social-eating-house/?$ 

您的规则应该是:

RewriteRule ^.*?find-a-bar/london/social-eating-house/?$ /find-a-bar/london/the-blind-pig-at-social-eating-house [R=302,L,NC] 

你验证它是否工作正常,只有后,更换R=302R=301。避免在测试mod_rewrite规则时使用R=301(永久重定向)。