2014-01-14 78 views
34

我一直在努力与一些htaccess重定向。我只是花了一些时间在堆栈上阅读和搜索,无法获得适合我的场景的anwser。htaccess 301重定向 - 删除查询字符串(QSA)

我正在为一个旧的客户端网站重新定向到一个新的301过程。旧的页面有参数查询,我想从网址中删除。

/menu.php?idCategorie=29&idDetail=172

/new-website-page/

我有多个查询做,这里有几个例子:

/menu.php?idCategorie=29&idDetail=172 
/menu.php?idCategorie=29&idDetail=182 
/menu.php?idCategorie=29&idDetail=184 
/menu.php?idCategorie=29&idDetail=256 

所有链接到不同的新页面。

这里是我的尝试:

RewriteCond %{QUERY_STRING} idDetail=172 
RewriteRule ^menu.php(.*) /new-page/? [R=301,L] 

我得到了正确的重定向,但URL保留查询字符串:

http://website.com/new-page/?idCategorie=29&idDetail=172 

我也试过这样:

RewriteRule ^menu.php?idCategorie=29&idDetail=172$ http://website.com/new-page/? [L,R=301] 

这:

RewriteCond %{QUERY_STRING} idDetail=172(.*)$ 
RewriteRule ^menu.php /new-page-name?$1 [L,R=301] 

它没有工作(仍然有查询字符串在末尾)

谢谢!

回答

75

您可以使用此规则:

RewriteRule ^menu\.php$ /new-page-name? [L,R=301] 

中注意它是用于在原来的URI剥离任何现有的查询字符串结束后?的。

+6

非常感谢。这工作像一个魅力!祝你有美好的一天 !! – newpxsn

+1

谢谢!我需要这个.. – sujitrulz

+0

对于简单的'Redirect 301/old-path http:newdomaindomain.com/new-path'语法还有一个解决方案吗? – rassoh

相关问题