【问题标题】:301 redirection not redirecting to the right URL without a trailing slash301 重定向未重定向到没有尾部斜杠的正确 URL
【发布时间】:2018-12-07 14:49:09
【问题描述】:

我必须手动将网站 1 中的几个 URL 重定向到网站 2。

下面是我在 website1 的.htaccess 文件中的代码

Redirect 301 /post1/ https://www.website2.com/post1

当我在浏览器中输入https://www.website1.com/post1/ 时,它会按预期成功重定向到https://www.website2.com/post1

但是,当我在浏览器中输入https://www.website1.com/post1 时,它会被重定向到https://www.website2.compost1https://www.website2.com 后面的斜线不见了

有什么办法可以解决这个问题?

【问题讨论】:

    标签: .htaccess redirect http-status-code-301


    【解决方案1】:

    您可以使用RedirectMatch 在单个规则中执行此操作,该规则使用正则表达式使尾部斜杠成为可选,如下所示:

    RedirectMatch 301 ^/(post1)/?$ https://www.website2.com/$1
    

    额外的好处是通过在源中使用捕获组并在目标中使用反向引用 $1,避免在源和目标中重复 post1

    【讨论】:

      【解决方案2】:

      从重定向中删除尾随 /

      Redirect 301 /post1 https://www.website2.com/post1
      

      然后,此重定向适用于 URL 的两个版本。见测试链接here

      【讨论】:

      • 这对你有帮助吗@Anirudh?
      【解决方案3】:

      以这个特定的顺序使用 2 个重定向 URL 解决了这个问题。

      Redirect 301 /post1 https://www.website2.com/post1
      
      Redirect 301 /post1/ https://www.website2.com/post1
      

      【讨论】:

      • 你不应该需要两个来完成这个。删除斜杠的那个应该已经足够了。您只需在加载之前为您的服务器添加一个额外的重定向即可运行。
      • @Joe 我试过了,但没用。这就是我必须同时添加两者的原因。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-17
      • 1970-01-01
      相关资源
      最近更新 更多