Apache rewriterule将文件夹重定向到子文件夹而不循环

时间:2012-01-10 11:38:24

标签: apache mod-rewrite loops redirect

长话短说,我正在尝试最后3个小时来执行似乎是基本的网址重定向。所有对mysite.com/folder的网站请求都应该重定向到mysite.com/folder/subfolder/。重定向应该“仅”执行!如果用户输入/文件夹。如果他访问/文件夹/文件,则不会发生重定向。

我尝试了以下但没有成功,所有尝试都会导致无限循环:

RewriteRule ^/folder$ /folder/subfolder/ [R]
Redirect 301 /folder /folder/subfolder/

我无权访问vhost文件,我也不允许使用php或类似的“解决方法”执行此操作。无论哪种方式,htaccess应该是最好的地方。任何人都可以了解我做错了吗?

1 个答案:

答案 0 :(得分:9)

重定向使用前缀模式匹配,因此您应该将RedirectMatch与正则表达式一起使用,这样您将只匹配目录访问而不是子目录中的文件访问。你不需要rewriteRule,它正在做同样的事情。

这应该有效:

RedirectMatch ^/folder/$ /folder/subfolder/

请注意,您使用301重定向,301表示永久性,因此您可能需要在测试新规则之前关闭浏览器,浏览器已记住重定向永久答案,并且在您关闭之前不会再次询问。< / p>