【问题标题】:htaccess redirect doesn't work: Too many redirects [closed]htaccess 重定向不起作用:重定向太多[关闭]
【发布时间】:2020-05-13 22:36:38
【问题描述】:

我们如何将带有// 的旧网址重定向到只有一个/

发件人:

https://www.example.com/maincategory//subcategory/

收件人:

https://www.example.com/maincategory/subcategory/

此解决方案的重定向过多:

Redirect 301 /maincategory//subcategory/ /maincategory/subcategory/

【问题讨论】:

  • 你能包括你现在拥有的东西,你正在匹配的东西,你尝试过的东西,它是如何不起作用的,等等?
  • @Sloloem 所有这些元素都已包含在问题中。 (?)

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


【解决方案1】:

您可以使用 mod_rewrite 来执行此操作。在根 .htaccess 文件的顶部尝试以下操作:

RewriteEngine on

RewriteCond %{THE_REQUEST} "^GET /maincategory//subcategory/"
RewriteRule (.*) /$1 [R=302,L]

这使用了 RewriteRule pattern 匹配的 URL 路径已经减少了多个斜杠的“功能”。然后,我们使用 $1 反向引用重定向回相同的 URL 路径。通过检查请求的实际 URL 是否包含双斜杠(存储在 THE_REQUEST 服务器变量中)来防止重定向循环。

THE_REQUEST 服务器变量包含 HTTP 请求标头的第一行。而且,重要的是,没有处理

请注意,我省略了字符串结尾的锚点 ($),因此上面将匹配 /maincategory//subcategory/<anything> 并相应地重定向。如果你特别想只匹配/maincategory//subcategory/,那么在 CondPattern。例如:

RewriteCond %{THE_REQUEST} "^GET /maincategory//subcategory/ HTTP"

在测试前清除浏览器缓存。使用 302(临时)重定向进行测试以避免缓存问题。

此解决方案的重定向过多:

Redirect 301 /maincategory//subcategory/ /maincategory/subcategory/

似乎 Apache 减少了 both 请求的 URL 路径和匹配之前提供给 Redirect 指令的 URL 路径中的多个斜杠,因此您最终会出现重定向循环。

【讨论】:

  • 谢谢你!正常工作:-)
猜你喜欢
  • 1970-01-01
  • 2019-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多