已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题吗?**通过editing this post添加详细信息并阐明问题。
两年前就关门了。
Improve this question
我们如何重定向一个带有//
的旧URL,使其只有一个/
发件人:
https://www.example.com/maincategory//subcategory/
收件人:
https://www.example.com/maincategory/subcategory/
此解决方案的重定向太多:
Redirect 301 /maincategory//subcategory/ /maincategory/subcategory/
1条答案
按热度按时间gkn4icbw1#
你可以使用mod_rewrite来完成这个操作。在根
.htaccess
文件的顶部尝试以下操作:这使用了
RewriteRule
* 模式 * 匹配的URL路径已经减少了多个斜杠的“特性”。然后我们使用$1
反向引用重定向回相同的URL路径。通过检查请求的实际URL是否包含双斜杠(存储在THE_REQUEST
服务器变量中)来防止重定向循环。THE_REQUEST
服务器变量包含HTTP请求头的第一行。重要的是,它不是 processed。注意,我省略了字符串末尾的锚点(
$
),因此上面的代码将匹配/maincategory//subcategory/<anything>
并相应地重定向。如果您特别希望只匹配/maincategory//subcategory/
,则在 CondPattern 的末尾包含一个 space(尽管 space +“HTTP”更容易阅读)。例如:请在测试前清除浏览器缓存。使用302(临时)重定向进行测试以避免缓存问题。
此解决方案的重定向太多:
看起来Apache在匹配之前减少了请求的URL路径和提供给
Redirect
指令的URL路径中的多个斜杠,因此您以重定向循环结束。