【问题标题】:.htaccess redirect ignoring criteria.htaccess 重定向忽略标准
【发布时间】:2015-03-31 12:55:49
【问题描述】:

我目前正在更新一个网站,并且不得不为一些我们不再使用的旧页面添加一些 301 重定向。我的代码是;

RewriteEngine On
RewriteBase /
Redirect 301 /old-folder/old-file.html http://www.newsite.com/new-folder/

不幸的是,重定向似乎忽略了 html 文件部分,所以当我访问旧链接时,我将被重定向到

http://www.newsite.com/new-folder/old-file.html

第一个孩子之后的任何内容都会被忽略,并且当我尝试使用此代码重定向更复杂的 url 时;

Redirect 301 /old-parent-folder/old-child-folder/old-page.html http://www.newsite.com/new-folder/new-page.html

然后我被重定向到一个损坏的网址,例如;

http://www.newsite.comold-child-folder/old-page.html

这也不是错字,.com 之后的斜线完全被忽略了。

我希望你能在这里看到问题,htaccess 似乎只看旧结构的第一部分而忽略其余部分,导致各种问题和奇怪的链接。

【问题讨论】:

    标签: .htaccess mod-rewrite redirect


    【解决方案1】:

    您不需要使用RewriteEngine OnRewriteBase /,因为Redirect 指令不是重写。

    但是,我会使用 Rewrite 来做我们想做的事情。它更强大,如果需要,您可以使用正则表达式更轻松地控制 URI。

    而不是这个。

    Redirect 301 /old-folder/old-file.html http://www.newsite.com/new-folder/
    

    使用这个

    RewriteEngine On
    RewriteRule ^old-folder/old-file.html http://www.newsite.com/new-folder/ [R=301,L]
    

    请注意,重写中没有前置 /。这是故意的。

    【讨论】:

      猜你喜欢
      • 2013-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-29
      • 2011-02-06
      • 1970-01-01
      • 2016-01-30
      • 1970-01-01
      相关资源
      最近更新 更多