仅将主页重定向到另一个链接

时间:2013-11-05 16:36:51

标签: apache .htaccess redirect

说我只想将http://example.com/重定向到http://example.com/main/,我该怎么做?

这就是我现在正在做的事情:

RewriteEngine On
RewriteBase /

RewriteRule ^$ main/ [R=301,L]

问题是,它还重定向查询字符串。例如:http://example.com/?channel=science正被重定向到http://example.com/main/?channel=science

我不希望仅重定向有效/指定的非空(即指定值)查询字符串。例如:

http://example.com/?channel

也应重定向。我该怎么做?

1 个答案:

答案 0 :(得分:1)

您可以在RewriteBaseRewriteRule之间使用(一个或多个)RewriteCond,只有当查询字符串匹配(或与!)不匹配时才强制重写。

这只会重定向查询字符串与catchannel匹配的请求

RewriteCond %{QUERY_STRING} ^(.*)(channel|cat)(.*)$

如果您需要其中一个条件,也可以使用多个RewriteCond和[OR]标志,如果您需要同时满足所有条件,则不使用[OR]标志。 E.g。

RewriteCond %{QUERY_STRING} ^(.*)(channel)(.*)$ [OR]
RewriteCond %{QUERY_STRING} ^(.*)(cat)(.*)$

此外,如果您要从重定向的网页中删除查询字符串,只需在重定向网址的末尾添加?,如下所示:

RewriteRule ^$ main/? [R=301,L]