.htaccess 如何使用mod_rewrite删除部分URL

.htaccess 如何使用mod_rewrite删除部分URL,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,我正在尝试从以下内容重定向: www.mysite.com/product.html?item=example 致: 我的.htaccess文件中有此重写规则,但它不起作用: RewriteRule ^/product\.html\?item=(.*)$ /$1 [R=301,L] 非常感谢您的帮助 以下是我现在拥有的: RewriteCond %{QUERY_STRING} ^item=(.*)$ RewriteRule ^/product\.html$ /%1 [R=301,L]

我正在尝试从以下内容重定向:

www.mysite.com/product.html?item=example
致:

我的.htaccess文件中有此重写规则,但它不起作用:

RewriteRule ^/product\.html\?item=(.*)$ /$1 [R=301,L] 
非常感谢您的帮助

以下是我现在拥有的:

RewriteCond %{QUERY_STRING} ^item=(.*)$
RewriteRule ^/product\.html$ /%1 [R=301,L] 
下面是我在规则开头去掉正斜杠并在规则末尾加上问号以去掉查询字符串后的最终结果:

RewriteCond %{QUERY_STRING} ^item=(.*)$
RewriteRule ^product\.html$ /%1? [R=301,L] 

由于您位于
.htaccess
文件中,因此需要从
重写规则中删除前导斜杠

RewriteCond %{QUERY_STRING} ^item=(.*)$
RewriteRule ^product\.html$ /%1? [R=301,L]
对于正在传递的查询字符串,for表示:

修改查询字符串

默认情况下,将传递查询字符串 通过保持不变。但是你可以,, 在替换字符串中创建URL 包含查询字符串部分。简单地 在表格中使用问号 替换字符串,以指示 以下案文应为: 重新注入查询字符串。 当您要删除现有的 查询字符串,结束替换 带问号的字符串。到 组合新的和旧的查询字符串,使用
[QSA]
标志


因此,正如您所发现的,您只需在替换后添加一个

您不能将查询字符串放在规则的LHS上。谢谢您,这非常有效。现在唯一的问题是url的末尾追加了查询字符串,所以它现在看起来是这样的:www.mysite.com/example?item=example如何从末尾删除查询字符串?我已经解决了。只是需要添加一个?到重写规则的结尾:重写规则^product\.html$/%1?[R=301,L]
RewriteCond %{QUERY_STRING} ^item=(.*)$
RewriteRule ^product\.html$ /%1? [R=301,L]