删除查询字符串

时间:2014-03-22 08:18:34

标签: .htaccess mod-rewrite

我有60个左右的旧产品网址:

http://www.domain.com/page.php?pid=Product姓名

我可以改写这样的。

RewriteCond %{QUERY_STRING} pid=Product%20Name [NC]

RewriteRule ^page\.php /my/new/url/for/Product_Name [R=301,NE,L]

但是这会将查询字符串保留在新的URL上,就像这样

http://www.domain.com/my/new/url/for/Product_Name?pid=Product%20Name

1 /有没有办法删除查询字符串?

2 /我是否需要为所有60种产品做同样的事情?很好,但只需要很多复制/粘贴。

一如既往地感谢。

2 个答案:

答案 0 :(得分:0)

在目标的末尾加上问号将清除查询字符串。

RewriteRule ^page\.php /my/new/url/for/Product_Name? [R=301,NE,L]

如果您发现自己多次重复相同的模式,请考虑使用RewriteMap指定处理该网址的程序。

答案 1 :(得分:0)

如果你不关心其他参数:

RewriteCond %{QUERY_STRING} pid=([^&]*) [NC]
RewriteRule ^page\.php /my/new/url/for/%1? [R=301,NE,L]

如果您想保存其他参数,请使用:

RewriteCond %{QUERY_STRING} ^(.*)pid=([^&]*)&?(.*)$ [NC]
RewriteRule ^page\.php /my/new/url/for/%2?%1%3 [R=301,NE,L,QSA]

这会留下一个悬挂?当没有其他参数,或悬挂&当pid是列表中的最后一个参数时,这些仍然是有效的URL。