.htaccess 重定向301和重写规则会导致添加查询字符串

.htaccess 重定向301和重写规则会导致添加查询字符串,.htaccess,mod-rewrite,redirect,url-rewriting,.htaccess,Mod Rewrite,Redirect,Url Rewriting,我知道我的重定向和重写语句存在一些冲突,但我还没有找到解决方案。我对正则表达式不太在行 目前,我有: RewriteRule category_(.*)-(.*)-(.*)-(.*)-(.*)-(.*)-(.*)\.html$ category.php?brand_name=$1&bid=$2&stid=$3&lid=$4&did=$5&sid=$6&sort=$7 它会生成一个与此类似的页面: category_Jackets-1-2-3-4-

我知道我的重定向和重写语句存在一些冲突,但我还没有找到解决方案。我对正则表达式不太在行

目前,我有:

RewriteRule category_(.*)-(.*)-(.*)-(.*)-(.*)-(.*)-(.*)\.html$ category.php?brand_name=$1&bid=$2&stid=$3&lid=$4&did=$5&sid=$6&sort=$7
它会生成一个与此类似的页面:

category_Jackets-1-2-3-4-5-6.html
出于SEO目的,我现在想将该页面重定向到:

category_Womens_Jackets-1-2-3-4-5-6.html
我试着说:

Redirect 301 /category_Jackets-1-2-3-4-5-6.html category_Womens_Jackets-1-2-3-4-5-6.html
但结果是:

category_Womens_Jackets-1-2-3-4-5-6.html?brand_name=Jackets&bid=1&stid=2&lid=3&did=4&sid=5&sort=6
我曾尝试使用重写规则和重定向的变体来解决这个问题,但到目前为止运气不佳。我知道冲突是问题所在,但我无法删除原始重写规则,否则这些页面将无法工作


任何帮助都将不胜感激。

重定向和重写规则指令是两个不同模块(mod_alias和mod_rewrite)的一部分,它们将在不同点应用于同一URI。因此,您正在同时重写重定向。如果使用重写,您应该坚持使用mod_rewrite重定向

RewriteRule ^category_Jackets-1-2-3-4-5-6\.html$ category_Womens_Jackets-1-2-3-4-5-6.html [L,R=301]

标志中的
R=301
告诉它301重定向。您需要将此放在您的另一条规则之前,并且,您的另一条规则需要考虑女性的
部分。

301显然会重定向页面,您到底需要什么?请适当提及我不需要它来添加查询字符串。我认为下面的答案对我很有帮助。我相信这是有效的,我发誓我已经尝试过这个方法了,只是一开始我没有^。那到底是干什么的?不管怎样,它现在似乎正在工作,谢谢你的帮助。