.htaccess htaccess重定向不';t工作:重定向太多

.htaccess htaccess重定向不';t工作:重定向太多,.htaccess,http-status-code-301,.htaccess,Http Status Code 301,如何使用/重定向旧URL,使其只有一个/ 发件人: 致: 此解决方案有太多重定向: Redirect 301 /maincategory//subcategory/ /maincategory/subcategory/ Redirect 301 /maincategory//subcategory/ /maincategory/subcategory/ 您可以使用mod_rewrite来执行此操作。在根.htaccess文件的顶部尝试以下操作: RewriteEngine on Rewri

如何使用
/
重定向旧URL,使其只有一个
/

发件人:

致:

此解决方案有太多重定向:

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

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

RewriteEngine on

RewriteCond %{THE_REQUEST} "^GET /maincategory//subcategory/"
RewriteRule (.*) /$1 [R=302,L]
这使用了一个“特性”,即
RewriteRule
模式匹配的URL路径已经减少了多个斜杠。然后,我们使用
$1
反向引用重定向回同一URL路径。通过检查请求的实际URL是否包含双斜杠(存储在
请求
服务器变量中),可以防止重定向循环

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

请注意,我省略了字符串结尾锚(
$
),因此上面的内容将匹配
/maincegory//subcategory/
,并相应地重定向。如果您特别希望只匹配
/maincography//subcategory/
,则在模式的末尾包含一个空格(尽管空格+HTTP更容易阅读)。例如:

RewriteCond %{THE_REQUEST} "^GET /maincategory//subcategory/ HTTP"
测试前清除浏览器缓存。使用302(临时)重定向进行测试,以避免缓存问题

此解决方案有太多重定向:

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

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

您是否可以包括您现在拥有的用于匹配的内容和您尝试过的内容,以及它如何不起作用,等等?@Sloloem所有这些元素都已经包含在问题中了。(?)谢谢你!按部就班地工作:-)