我希望重定向发生
example.com --> www.example.com/abc
www.example.com --> www.example.com/abc
example.com/abc --> www.example.com/abc
example.com/anyRubbish --> www.example.com/abc
但是我对RedirectCond和ReWriteRule和RewriteBase之间的区别感到困惑,'L'和[L,R 301]中的R等等。
我正在为Apache Server编写规则。
答案 0 :(得分:1)
您可以使用以下规则:
RewriteEngine on
RewriteCond ℅{HTTP_HOST} !^www\. [NC,OR]
RewriteCond ℅{REQUEST_URI} !^/ABC
RewriteRule ^ http://www.example.com/abc℅{REQUEST_URI} [L,R]
这是一个简短的解释:
第一个条件rewrite cond ℅{HTTP_HOST} !^www\. [OR]
检查http主机头字符串是否不以www
开头。如果主机主机值为 example.com ,则该条件返回true。
第二个条件RewriteCond ℅{REQUEST_URI} !^/ABC
测试Uri。检查Uri是否不是 / ABC 。 。如果网址为 example.com/foobar ,则返回true;如果网址为 example.com/ABC ,则返回false
OR
标志告诉mod-rewrite执行其中一个条件,如果满足上述脚本中的一个条件,则应用规则。
根据条件应用RewriteRule RewriteRule ^ http://www.example.com/abc℅{REQUEST_URI} [L,R]
,这会将所有请求重写为 www.example.com/ABC 。