301 重定向不重定向到右边 URL 没有尾部斜线

301 redirection not redirecting to the right URL without a trailing slash

我必须手动将网站 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

之后缺少斜线

如何解决这个问题?

从重定向中删除尾随 /

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

此重定向适用于 URL 的两个版本。见测试 link here.

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

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

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

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

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

增加的好处 通过在源中使用捕获组并在目标中使用反向引用 </code> 来避免在源和目标中重复 <code>post1