使用mod_rewrite将Querystring之后的所有内容重定向到另一个页面

时间:2013-10-11 14:35:35

标签: php apache .htaccess mod-rewrite redirect

我正在开发一个基于查询字符串的两个多页重定向的网站。问题是这些页面现在给我们一个404错误

网址1类似于

  

website.com?queryhome=productname-546-axdd

网址2就像

  

website.com?querynonhome=productname-546-asx

我正在尝试将网址1中的所有内容转到主页和网址2转到网站http://reviews-page

我尝试了以下网址1

RewriteCond %{QUERY_STRING}  ^queryhome=([0-9]*)$
RewriteRule (.*)  http://www.website.com  [R=301,L]

以及URL 2的以下内容

RewriteCond %{QUERY_STRING}  ^querynohome=([0-9]*)$
RewriteRule (.*)  http://www.website.com/reviews-page  [R=301,L]

但似乎都不起作用。

对此事的任何帮助都将不胜感激。很明显,这是我第一次尝试处理具有查询字符串的URL。

谢谢

1 个答案:

答案 0 :(得分:1)

你的正则表达式是这里的问题:

RewriteCond %{QUERY_STRING} ^queryhome=([0-9]*)$
RewriteRule (.*)  http://www.website.com  [R=301,L]

哪个匹配查询字符串queryhome=1234仅由于[0-9]*而非queryhome=productname-546-axdd

您需要使用以下规则:

RewriteCond %{QUERY_STRING} ^queryhome=([^&]*) [NC]
RewriteRule ^ http://www.website.com/? [R=301,L]

RewriteCond %{QUERY_STRING} ^querynohome=([^&]*) [NC]
RewriteRule ^ http://www.website.com/reviews-page? [R=301,L]

请阅读:Apache mod_rewrite Introduction