如何强制一个子域作为默认域,但保持其他子域的工作?

我在http://www.example.com上安装了WordPress网站,在http://test.example.com上安装了另一个WordPress网站。 我用这个.htaccess代码成功地将http://www.example.comredirect到了http://beta.example.com

 RewriteCond %{HTTP_HOST} !^beta\.example\.com RewriteRule ^(.*)$ http://beta.example.com/$1 [R=301,L] 

但是,当尝试访问http://test.example.com它会强制它发生http://beta.example.com/test/并显示404错误。 有没有办法让这个testing版redirect,但仍然保持我的WordPress网站http://test.example.com工作?

如果我正确地理解了你,你想test.example.com仍然去test.example.com。 您可以添加另一个条件,并且必须符合遵循的规则。 它看起来像:

 RewriteCond %{HTTP_HOST} !^beta\.example\.com RewriteCond %{HTTP_HOST} !^test\.example\.com RewriteRule ^(.*)$ http://beta.example.com/$1 [R=301,L] 

现在, betatest子域都不会redirect,但所有其他人都会redirect。

如果您只希望www.example.com或example.com转到您可以使用的beta子域

 RewriteCond %{HTTP_HOST} ^(www\.)?example\.com RewriteRule ^(.*)$ http://beta.example.com/$1 [R=301,L] 

http://htaccess.madewithlove.be/有一个很好的工具来检查mod的重写规则

或者,如果您有权访问服务器区域文件,则可以为要指向beta子域的所有域设置CNAMElogging,并且不会发生redirect,因此如果用户访问www.example.com,则URL仍然是当他们实际上在testing版网站时也是如此。