Apache 如何删除查询字符串?

Apache 如何删除查询字符串?,apache,mod-rewrite,Apache,Mod Rewrite,注:我很少说英语 我对mod\u rewrite有问题 我想替换我的网站名,我想要这个URL http://www.oldsite.com/index.php?v=contact 重写为URL http://www.newsite.com/page/contact with 301 rewrite. 我是这样做的: Options +FollowSymlinks RewriteEngine on RewriteCond %{QUERY_STRING} v=contact RewriteR

注:我很少说英语

我对
mod\u rewrite
有问题

我想替换我的网站名,我想要这个URL

 http://www.oldsite.com/index.php?v=contact 
重写为URL

http://www.newsite.com/page/contact with 301 rewrite.
我是这样做的:

Options +FollowSymlinks
RewriteEngine on
RewriteCond %{QUERY_STRING} v=contact
RewriteRule ^index.php http://www.newsite.net/page/contact [R=301,L]
但是我得到了查询
http://www.newsite.net/page/contact?v=contact
。 我不想要
?v=联系人
,我想要
http://www.newsite.net/page/contact

根据,您应该能够编写:

RewriteRule ^index.php http://www.newsite.net/page/contact$1? [R=301,L]
从:

注意:查询字符串
模式将不会与查询字符串匹配。相反,您必须对
%{QUERY\u STRING}
变量使用RewriteCond。但是,您可以在包含查询字符串部分的替换字符串中创建URL。只需在替换字符串内使用问号,以指示应将以下文本重新注入查询字符串如果要删除现有查询字符串,请在替换字符串的末尾加一个问号。要将新查询字符串与旧查询字符串组合,请使用
[QSA]
标志

因此,您可能应该:

RewriteRule ^index.php http://www.newsite.net/page/contact? [R=301,L]

我希望你不介意:)(但我也不是以英语为母语的)。你知道1美元是什么意思吗?它是对模式的第一个捕获组的反向引用。但由于没有捕获组,这没有多大意义。