我有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种产品做同样的事情?很好,但只需要很多复制/粘贴。
一如既往地感谢。
答案 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。