1

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

URL 1 类似于

website.com?queryhome=productname-546-axdd

URL 2 类似于

website.com?querynonhome=productname-546-asx

我正在尝试将 URL 1 中的所有内容转到主页,将 URL 2 中的所有内容转到 website.com/reviews-page

我为 URL 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。

谢谢

4

1 回答 1

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 简介

于 2013-10-11T14:38:24.420 回答