.htaccess htaccess重定向不起作用:太多重定向[已关闭]

cqoc49vn  于 2022-11-16  发布在  其他
关注(0)|答案(1)|浏览(128)

已关闭。此问题需要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/
gkn4icbw

gkn4icbw1#

你可以使用mod_rewrite来完成这个操作。在根.htaccess文件的顶部尝试以下操作:

RewriteEngine on

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

这使用了RewriteRule * 模式 * 匹配的URL路径已经减少了多个斜杠的“特性”。然后我们使用$1反向引用重定向回相同的URL路径。通过检查请求的实际URL是否包含双斜杠(存储在THE_REQUEST服务器变量中)来防止重定向循环。
THE_REQUEST服务器变量包含HTTP请求头的第一行。重要的是,它不是 processed
注意,我省略了字符串末尾的锚点($),因此上面的代码将匹配/maincategory//subcategory/<anything>并相应地重定向。如果您特别希望只匹配/maincategory//subcategory/,则在 CondPattern 的末尾包含一个 space(尽管 space +“HTTP”更容易阅读)。例如:

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

请在测试前清除浏览器缓存。使用302(临时)重定向进行测试以避免缓存问题。
此解决方案的重定向太多:

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

看起来Apache在匹配之前减少了请求的URL路径和提供给Redirect指令的URL路径中的多个斜杠,因此您以重定向循环结束。

相关问题