我有一个域domain.com
,我将其用作主域名。我还拥有第二个域domain2.com
,我自动转到domain.com
这是通过.htaccess:
完成的RewriteCond %{HTTP_HOST} !^www\.domain\.com [NC]
RewriteRule (.*) http://www.domain.com/$1 [L,R=301]
我想设置一个子域sub.domain.com
但是当前.htaccess,访问sub.domain.com会将我发送到www.domain.com/sub
我找到this问题,这解决了这个问题,但却否定了我domain2.com
指向domain.com
的第一期问题
RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
我正在寻找一种方法来结合这两条规则:
www.domain.com
=> www.domain.com
domain.com
=> www.domain.com
domain2.com
=> www.domain.com
sub.domain.com
=> sub.domain.com
答案 0 :(得分:1)
您需要收紧RewriteConds,以便它们只匹配您想要匹配和更改的特定主机名,例如'^ domain \ .com $'和'^(www \。)?domain2 \ .com $ ”。目前他们都会匹配任何东西,所以他们会干涉。
但是你必须在.htaccess中这样做吗?在主站点配置中使用简单的重定向更简洁:
<VirtualHost *:80>
ServerName www.domain.com
...your real config...
</VirtualHost>
<VirtualHost *:80>
ServerName www.domain2.com
ServerAlias domain2.com
ServerAlias domain.com
ServerAlias sub.domain.com
Redirect permanent http://www.domain.com/
</VirtualHost>
还会从应用程序的Web根目录中获取令人讨厌的特定于部署的内容。
(我无法确定你是否真的希望子域名转到另一个文件夹;如果你这样做,请删除上面的sub.domain.com行并将其放入自己的VirtualHost中:)
<VirtualHost *:80>
ServerName sub.domain.com
Redirect permanent http://domain.com/sub/
</VirtualHost>
答案 1 :(得分:1)
尝试此规则:
RewriteCond %{HTTP_HOST} !^([^.]+\.)?example\.com$ [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.example.com%{REQUEST_URI} [L,R=301]
答案 2 :(得分:1)
这是否会起作用:
RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC]
RewriteCond %{HTTP_HOST} !^sub\.domain\.com$ [NC]
RewriteRule (.*) http://www.domain.com/$1 [L,R=301]
答案 3 :(得分:1)
RewriteCond %{HTTP_HOST} !^([^.]+\.)example\.com$ [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.example.com%{REQUEST_URI} [L,R=301]
应该解决你的问题:D