【问题标题】:How to prevent a regex looping a url rewrite如何防止正则表达式循环 url 重写
【发布时间】:2012-07-17 13:20:55
【问题描述】:

我正在尝试使用 wordpress 插件Redirection 来重定向如下网址:

http://mysite.com/wp-content/uploads/image.jpg

http://mysite.com/subdir/wp-content/uploads/image.jpg

我正在尝试/(wp-content/uploads/.*) 并发现它重定向到:

http://mysite.com/subdir/subdir/subdir/subdir/subdir/subdir....

并在 Firefox 中抛出错误:'Firefox 检测到服务器正在以永远不会完成的方式重定向对该地址的请求。'

我也试过了:

^https?://(|www\.)mysite.com.au/(wp-content/uploads/.*)

但似乎重定向不适用于域 - 页面加载 404,并且 URL 没有更改。

感谢任何线索!

谢谢,蒂姆

【问题讨论】:

    标签: regex wordpress infinite-loop url-redirection


    【解决方案1】:

    您需要为重写指定[L] 标志,以确保它是最后一个。否则,它会不断重写您的 URL,每次都附加 subdir

    我不熟悉重定向插件。看看有没有这个选项。如果没有,我建议使用更具体的正则表达式或删除插件并自己编写这些,直接在.htaccess 中。

    【讨论】:

    • 很好的提示!我读过这就是wordpress管理其默认重定向的方式......如果规则是^/wp-content,我的规则似乎有效。另外,我认为该规则实际上是在与另一个规则交互,这似乎已经解决通过移动我的规则先运行,虽然没有地方指定 [L] 我想我应该等一天,让我的评论成为答案?
    • 如果这就是解决问题的方法。内部 WP 重定向很复杂。正如您所指出的,有时移动规则可以解决问题。就个人而言,如果它是一个站点范围的重定向,我会在 .htaccess 中进行。
    【解决方案2】:

    将规则更改为 ^/wp-content..

    此外,我认为该规则实际上是在与另一个规则交互,这似乎可以通过将我的规则移动到首先运行来解决,尽管没有地方指定 [L]

    将来,当我密切关注日志以查看是否正确时,我会将重定向移动到 .htaccess 并使用 @jason 建议的 [L] 标志。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-01
      • 2018-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多