说我只想将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
也应重定向。我该怎么做?
答案 0 :(得分:1)
您可以在RewriteBase
和RewriteRule
之间使用(一个或多个)RewriteCond,只有当查询字符串匹配(或与!)不匹配时才强制重写。
这只会重定向查询字符串与cat
或channel
匹配的请求
RewriteCond %{QUERY_STRING} ^(.*)(channel|cat)(.*)$
如果您需要其中一个条件,也可以使用多个RewriteCond和[OR]
标志,如果您需要同时满足所有条件,则不使用[OR]标志。 E.g。
RewriteCond %{QUERY_STRING} ^(.*)(channel)(.*)$ [OR]
RewriteCond %{QUERY_STRING} ^(.*)(cat)(.*)$
此外,如果您要从重定向的网页中删除查询字符串,只需在重定向网址的末尾添加?
,如下所示:
RewriteRule ^$ main/? [R=301,L]