0

假设我只想重定向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

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

4

1 回答 1

1

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

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

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

如果您需要其中一个条件,也可以将多个 RewriteCond 与[OR]标志结合使用,或者如果您需要所有条件同时为真,则不使用 [OR] 标志。例如

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

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

RewriteRule ^$ main/? [R=301,L]
于 2013-11-05T16:43:12.453 回答