.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缓存