htaccess 重定向不起作用:重定向太多
htaccess redirect doesn't work: Too many redirects
我们如何将旧的 URL 与 //
重定向为只有一个 /
发件人:
https://www.example.com/maincategory//subcategory/
收件人:
https://www.example.com/maincategory/subcategory/
此解决方案的重定向过多:
Redirect 301 /maincategory//subcategory/ /maincategory/subcategory/
您可以使用 mod_rewrite 来做到这一点。在根 .htaccess
文件的顶部尝试以下操作:
RewriteEngine on
RewriteCond %{THE_REQUEST} "^GET /maincategory//subcategory/"
RewriteRule (.*) / [R=302,L]
这里使用"feature",RewriteRule
模式匹配的URL-path已经减少了多个斜线。然后我们使用 </code> 反向引用重定向回相同的 URL-path。通过检查请求的实际 URL 是否包含双斜杠(存储在 <code>THE_REQUEST
服务器变量中)来防止重定向循环。
THE_REQUEST
服务器变量包含 HTTP 请求的第一行 headers。而且,重要的是,不是 processed.
请注意,我省略了 end-of-string 锚点 ($
),因此上面的内容将匹配 /maincategory//subcategory/<anything>
并相应地重定向。如果你特别想只匹配 /maincategory//subcategory/
那么包括一个 space (尽管 space + "HTTP" 更容易阅读)在 CondPattern 的末尾。例如:
RewriteCond %{THE_REQUEST} "^GET /maincategory//subcategory/ HTTP"
测试前清除浏览器缓存。使用 302(临时)重定向进行测试以避免缓存问题。
This solution has too many redirects:
Redirect 301 /maincategory//subcategory/ /maincategory/subcategory/
似乎 Apache 在 请求的 URL-path 和提供给 Redirect
指令的 URL-path 匹配之前减少了多个斜杠,所以你最终会遇到一个重定向循环。
我们如何将旧的 URL 与 //
重定向为只有一个 /
发件人:
https://www.example.com/maincategory//subcategory/
收件人:
https://www.example.com/maincategory/subcategory/
此解决方案的重定向过多:
Redirect 301 /maincategory//subcategory/ /maincategory/subcategory/
您可以使用 mod_rewrite 来做到这一点。在根 .htaccess
文件的顶部尝试以下操作:
RewriteEngine on
RewriteCond %{THE_REQUEST} "^GET /maincategory//subcategory/"
RewriteRule (.*) / [R=302,L]
这里使用"feature",RewriteRule
模式匹配的URL-path已经减少了多个斜线。然后我们使用 </code> 反向引用重定向回相同的 URL-path。通过检查请求的实际 URL 是否包含双斜杠(存储在 <code>THE_REQUEST
服务器变量中)来防止重定向循环。
THE_REQUEST
服务器变量包含 HTTP 请求的第一行 headers。而且,重要的是,不是 processed.
请注意,我省略了 end-of-string 锚点 ($
),因此上面的内容将匹配 /maincategory//subcategory/<anything>
并相应地重定向。如果你特别想只匹配 /maincategory//subcategory/
那么包括一个 space (尽管 space + "HTTP" 更容易阅读)在 CondPattern 的末尾。例如:
RewriteCond %{THE_REQUEST} "^GET /maincategory//subcategory/ HTTP"
测试前清除浏览器缓存。使用 302(临时)重定向进行测试以避免缓存问题。
This solution has too many redirects:
Redirect 301 /maincategory//subcategory/ /maincategory/subcategory/
似乎 Apache 在 请求的 URL-path 和提供给 Redirect
指令的 URL-path 匹配之前减少了多个斜杠,所以你最终会遇到一个重定向循环。