【问题标题】:htaccess rewrite causing infinite redirecthtaccess 重写导致无限重定向
【发布时间】:2015-10-25 19:16:24
【问题描述】:

我需要用类似的东西重写一个 URL

/index.php?option=com_scoreboard&view=scoreboard&agent=001C0000016rJeUIAU

到

/quote/?agent=001C0000016rJeUIAU.

这是我到目前为止所得到的。

RewriteCond %{QUERY_STRING} agent=(\w+)&?
RewriteRule ^index.php /quote/?agent=%1 [R=301,L]

这很好用,但它以无限循环结束。我也知道为什么,因为它一直在寻找agent=。我应该在重写规则中添加什么来阻止这种情况?

我也尝试过类似的变体

RewriteCond %{QUERY_STRING} ^option=\w+?&agent=(\w+)&?
RewriteRule ^index.php /quote/?agent=%1 [R=301,L]

但它以相同的无限重定向结束。

这也适用于 Joomla 网站,如果有帮助的话。所以在这条规则之后是标准的 Joomla 重写。

非常感谢!

【问题讨论】:

    标签: php apache .htaccess mod-rewrite joomla


    【解决方案1】:

    改用THE_REQUEST 变量,并确保将此规则作为第一条规则:

    RewriteCond %{THE_REQUEST} /index\.php\?agent=(\w+)
    RewriteRule ^ /quote/?agent=%1 [R=301,L]
    

    THE_REQUEST 变量表示 Apache 从您的浏览器收到的原始请求,并且在执行某些重写规则后不会被覆盖。

    【讨论】:

    • ok css/js 等由于使用了相对链接,是一个不同的问题。要解决此问题,您可以将其添加到页面 HTML 的 <head> 部分:<base href="/" />。
    • 实际上您的原始答案确实有效。我在前面有 /quote/ 的资源所遇到的问题与重写无关,而是与其他所有内容有关。谢谢!
    猜你喜欢
    • 2013-12-12
    • 1970-01-01
    • 2019-04-01
    • 2019-09-16
    • 2013-06-25
    • 2021-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多