RewriteRule不起作用。

时间:2013-05-30 12:08:17

标签: .htaccess url-rewriting

不起作用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时,没有任何事情发生

3 个答案:

答案 0 :(得分:0)

请注意,您的正则表达式(一旦删除句点)将匹配您可能不会想到的某些URI。

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

尝试:

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

明确说明了您要匹配的字符串的开头和结尾。

答案 1 :(得分:0)

RewriteRule。* find-a-bar / london / social-eating-house。 / find-a-bar / london / the-blind-pig-at-social-eating-house [R = 301,L]就是答案

答案 2 :(得分: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=302替换为R=301。在测试mod_rewrite规则时,请避免使用R=301(永久重定向)。