.htaccess 转发所有请求,但以不同方式处理根调用
我有一个域(例如,.htaccess 转发所有请求,但以不同方式处理根调用,.htaccess,.htaccess,我有一个域(例如,doma.in),我只用于转发目的。所以我创建了这个.htaccess定义: RewriteEngine On RewriteRule ^(.*)$ http://www.mydomain.tld/in/$1 [R=301,L] 这将在以下方案中成功转发呼叫 http://doma.in/abc -> http://www.mydomain.tld/in/abc http://doma.in/123 -> http://www.mydomain.t
doma.in
),我只用于转发目的。所以我创建了这个.htaccess
定义:
RewriteEngine On
RewriteRule ^(.*)$ http://www.mydomain.tld/in/$1 [R=301,L]
这将在以下方案中成功转发呼叫
http://doma.in/abc -> http://www.mydomain.tld/in/abc
http://doma.in/123 -> http://www.mydomain.tld/in/123
http://doma.in/abc/123 -> http://www.mydomain.tld/in/abc/123
但是我想转发root调用,有无www
:
http://doma.in
http://www.doma.in
http://doma.in/
http://www.doma.in/
到http://www.mydomain.tld
我已尝试添加另一个RewriteCond
,但此设置会在所有调用中引发服务器错误:
RewriteEngine On
RewriteRule ^(.*)$ http://www.mydomain.tld/o/$1 [R=301,L]
RewriteCond ^(.*)doma.in/?$
RewriteRule ^(.*)$ http://www.mydomain.tld [R=301,L]
如何调整我的.htaccess
以支持我的需求?您可以使用:
RewriteEngine On
# root URL
RewriteRule ^/?$ http://www.mydomain.tld/ [R=301,L]
# all but root URL
RewriteRule ^(.+)$ http://www.mydomain.tld/in/$1 [R=301,L]
请确保在新浏览器中进行测试,以避免旧的301缓存