2012-06-19 47 views
1

我需要更新我的.htaccess文件以永久所有网址重定向从http://example.com/pages/5604/article/something/?page=299http://example.com/pages/5604/article/。这是我实现(可悲的是不工作):的.htaccess 301重定向用正则表达式

RewriteRule ^pages/(.*)/(.*)/something/\?page=(.*) /pages/$1/$2 [R=301,L]

在此先感谢您的帮助和建议!

回答

2

QUERY_STRING不在匹配的网址中,您必须在RewriteCond中单独匹配。喜欢的东西(未经测试):

RewriteCond %{QUERY_STRING} ^page=(.*) 
# Apache >= 2.4 
RewriteRule ^pages/(.*)/(.*)/something/ /pages/$1/$2 [R=301,L,QSD] 
# Apache < 2.4 
RewriteRule ^pages/(.*)/(.*)/something/ /pages/$1/$2? [R=301,L] 

如果您需要在您的RewriteRulepage=后的值,你可以使用%1以同样的方式使用$1(火柴RewriteCond的是%N,在RewriteRule$N

+0

这是一个非常好的开始(谢谢!),但它仍然追加'?page =(。*)'。我怎样才能摆脱呢? – eistrati

+0

嗯,这是新的给我,但['QSD'标志(http://httpd.apache.org/docs/current/rewrite/flags.html#flag_qsd)似乎有需要,学到了一些东西今天太; ) – Wrikken

+0

哦,如果你使用<2.4:追加'?'来代替。 – Wrikken