【问题标题】:Apache rewriterule to redirect folder to subfolder without loopApache rewriterule 将文件夹重定向到没有循环的子文件夹
【发布时间】:2012-02-06 19:53:30
【问题描述】:

长话短说,在过去的 3 个小时里,我一直在尝试执行看似基本的 url 重定向。所有对 mysite.com/folder 的网站请求都应重定向到 mysite.com/folder/subfolder/。应该“仅”执行重定向!如果用户输入/文件夹。如果他访问 /folder/file 不会发生重定向。

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

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

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

【问题讨论】:

  • 第一条规则应该有效,尽管您可能需要添加一个尾斜线。所以RewriteRule ^/folder/$ /folder/subfolder/ [R].

标签: apache mod-rewrite loops redirect


【解决方案1】:

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

这应该可行:

RedirectMatch ^/folder/$ /folder/subfolder/

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

【讨论】:

猜你喜欢
  • 2014-03-17
  • 2016-12-17
  • 2021-09-08
  • 2018-09-30
  • 2017-12-05
  • 2012-12-09
  • 1970-01-01
  • 2013-07-10
  • 2016-05-08
相关资源
最近更新 更多