代码之家  ›  专栏  ›  技术社区  ›  matt

htaccess:301重定向反应站点导致重复模式

  •  1
  • matt  · 技术社区  · 6 年前

    很奇怪的行为。

    在mysite的子域上 https://staging.example.com 我有下面的htaccess。

    <IfModule mod_rewrite.c>
    RewriteEngine On 
    Redirect 301 /support /support/subsection
    </IfModule>
    

    这个很好用 https://example.com 但不在staging.mysite.com上

    出现这种情况: https://staging.example.com/support/subsection/subsection/subsection/subsection/subsection/subsection/subsection/subsection

    我得到了这个重复的模式,好像有什么循环或者什么事情发生了。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Gillsoft AB    6 年前

    重定向指令需要完整的URI作为重定向目标。但是,您可以使用RedirectMatch来指定相对URI作为目标。

    RedirectMatch 301 ^/support$ /support/subsection
    

    我认为你得到所有这些小节有两个原因。第一个原因是您没有为重定向使用完整的URI。我认为文档声称你不必使用它,我想是文档的错别字。

    第二个原因是,您没有明确地告诉引擎您想要什么,因此它不会总是按预期工作。使用.htaccess时,每次调用.htaccess文件时都会处理规则。由于您没有告诉从何处开始和结束(^$),它(我认为)将每个字符处理一次,这似乎是保持不变的。但是,如果使用httpd.conf文件,则只会处理一次。

    如果使用httpd.conf的另一个好处是,您可以启用日志记录来研究复杂的mod重写指令。要启用日志记录,请将以下内容添加到httpd.conf:

    RewriteLog /var/log/apache/rewrite.log
    RewriteLogLevel 2