重定向规则创建循环

时间:2018-08-08 19:13:05

标签: .htaccess redirect mod-rewrite

我对htaccess有一个重定向规则,该规则只是将父页面指向其子页面。

Redirect 301 /swu-members-only/ /swu-members-only/home/

但是,当我尝试访问要重定向的页面时,它会返回如下网址:http://simonwu.com.au/swu-members-only/home/home/home/home/home/home/home/home/home/home/home/home/home/home/home/home/home/home/home/home/home

是什么导致这种重定向循环发生的原因?任何修复建议都将不胜感激。

1 个答案:

答案 0 :(得分:1)

重定向循环的原因是,您重写的模式也与目标路径匹配。因此,当客户端将 next 请求发送到指定目标时,它会再次 重定向...

您可以通过强制完全匹配来解决:

RedirectMatch "^/swu-members-only/?$" "/swu-members-only/home/"

另一种选择是使用重写模块,该模块提供很多的灵活性:

RewriteEngine on
RewriteRule "^/?swu-members-only/?$" "/swu-members-only/home/" [R=302]

还有一个一般性说明:您应该始终喜欢将此类规则放置在http服务器主机配置中,而不要使用动态配置文件(“ .htaccess”)。这些动态配置文件增加了复杂性,通常是导致意外行为的原因,难以调试,它们确实使http服务器变慢,通常一无是处,它们可以打开通往安全噩梦的途径。仅在您无权访问真正的http服务器主机配置(阅读:真正便宜的服务提供商)的情况下提供它们。