如何删除查询字符串?

时间:2010-11-13 20:21:40

标签: apache mod-rewrite

注意:我会说英语

我遇到mod_rewrite的问题。

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

 http://www.oldsite.com/index.php?v=contact 

重写为网址

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=contact,我想要http://www.newsite.net/page/contact

2 个答案:

答案 0 :(得分:2)

来自documentation

  

注意:查询字符串
  模式将不与查询字符串匹配。相反,您必须使用带有%{QUERY_STRING}变量的RewriteCond。但是,您可以在替换字符串中创建包含查询字符串部分的URL。只需在替换字符串中使用问号,即表示应将以下文本重新注入查询字符串。 如果要删除现有查询字符串,请仅使用问号结束替换字符串。要将新查询字符串与旧查询字符串组合,请使用[QSA]标记。

所以你应该有:

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

答案 1 :(得分:0)

根据this article,您应该能够写下:

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