不工作重写规则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没有发生
不工作重写规则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没有发生
要知道,你的正则表达式(一旦周期删除)将匹配您可能不期望的一些URI
something/find-a-bar/london/social-eating-house
尝试:
^find-a-bar/london/social-eating-house$
其中明确规定开始和你想匹配字符串的结尾。
RewriteRule。* find-a-bar/london/social-eating-house。 /找到-A-酒吧/伦敦/的盲猪 - 在 - 社会 - 食内部[R = 301,L]是答案
不工作的正则表达式:
.*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=302
至R=301
。避免在测试mod_rewrite规则时使用R=301
(永久重定向)。