.htAccess基于类别插件的重定向太多

时间:2019-02-01 作者:Willi

我将我的wordpress页面向上移动了一个目录,并用新名称更改了一系列类别。但当我尝试设置301重定向via时。htaccess,然后访问该类别的url,浏览器会错误地显示“重定向过多”消息。

Redirect 301 /category/cat-a/subcat-a/subsubcat-a/ https://example.com/category/newcat-a/newsubcat-a/

Redirect 301 /category/cat-b/subcat-b/ https://example.com/category/newcat-b/mynewsubcat-b/

... bunch more categories
“category”slug在新旧名称中保持不变。

我知道有一个标志可以使规则成为“最终”规则,但我不知道如何才能做到。因为我后来也试过设置标志,比如:

Redirect 301 /category/cat-a/subcat-a/subsubcat-a/ https://example.com/category/newcat-a/newsubcat-a/ [L]
我尝试过这个和许多其他的变化,但都没有对我有利。

我错过了什么吗。我也不确定是否有一个正则表达式可以解决这个问题。基本上根据我的理解,这会创建一个无限循环。

1 个回复
最合适的回答,由SO网友:MrWhite 整理而成

从您发布的内容来看,不清楚您为什么会得到重定向循环。我们需要看看其他的.htaccess 文件然而

您可能与现有mod\\u重写(即。RewriteRule) 指令。Redirect 是mod\\u alias指令。

毫无疑问,WordPress前端控制器存在mod\\u rewrite指令。您还有其他重定向。您应该避免混合来自两个模块的重定向,因为它们可能不会按照您期望的顺序执行(mod\\u rewrite总是在mod\\u alias之前运行,尽管配置文件中的顺序很明显)。

我知道有一个标志可以使规则成为“最终的”,但是。。。

该“标志”适用于mod\\u重写RewriteRule, 不Redirect (mod\\u别名)。通过将该标志添加到Redirect 在这种情况下,它将被忽略。

您应该更改这些mod\\u别名Redirect mod\\u重写指令RewriteRule 并将其包括在内at the very top of your file.

例如:

RewriteRule ^(category)/cat-a/subcat-a/subsubcat-a/(.*) /$1/newcat-a/newsubcat-a/$2 [R=302,L]
RewriteRule ^(category)/cat-b/subcat-b/(.*) /$1/newcat-b/mynewsubcat-b/$2 [R=302,L]
这假设类别之后的所有内容都复制到目标URL的末尾。例如:。.../subsubcat-a/foo/bar 成为.../newsubcat-a/foo/bar. (这是你原来的Redirect 指令可以完成。)

$1 是对“类别”的反向引用(仅保存重复),并且$2 是类别字符串之后的所有内容。

这个L (last) 此处需要标记。

使用302进行测试,只有在确定其正常工作时才更改为301,以避免缓存问题。

测试之前,您需要清除浏览器缓存。

相关推荐

重定向htaccess在我的新WordPress站点上不能正常工作

我有一个很好的老网站(www.example.com). 我创建了一个新网站(www.example.com/wordpress) 我想我可以.htaccess 重定向,就像我过去对其他html网站所做的那样。我得到的结果是:www.example.com/worpress/wordpress/wordpress......... 直到它出错。有人能帮我吗?我在中使用了此命令.htaccess:Redirect permanent / http://www.example.com/wordpress/&#