不工作重写规则
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 .*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 什么都没有发生
不工作的正则表达式:
.*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
. R=301
在测试你的 mod_rewrite 规则时避免使用(永久重定向)。
RewriteRule .*find-a-bar/london/social-eating-house。/find-a-bar/london/the-blind-pig-at-social-eating-house [R=301,L] 就是答案
请注意,您的正则表达式(一旦删除句点)将匹配一些您可能不期望的 URI,例如
something/find-a-bar/london/social-eating-house
尝试:
^find-a-bar/london/social-eating-house$
其中明确说明了您要匹配的字符串的开头和结尾。