代码之家  ›  专栏  ›  技术社区  ›  idrumgood

.htaccess具有一个子域和两个域的规则

  •  1
  • idrumgood  · 技术社区  · 15 年前

    我有一个领域 domain.com 作为我的主域。我还拥有第二个域名 domain2.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 问题,它解决了这个问题,但否定了我的第一个问题 域名2 指向 域名网

    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网站
    域名网 =>www.domain.com网站
    域名2 =>www.domain.com网站
    域名网 =>sub.domain.com网站

    4 回复  |  直到 15 年前
        1
  •  1
  •   Mez    15 年前
    RewriteCond %{HTTP_HOST} !^([^.]+\.)example\.com$ [NC]
    RewriteCond %{HTTPS}s ^on(s)|
    RewriteRule ^ http%1://www.example.com%{REQUEST_URI} [L,R=301]
    

    应该解决你的问题:d

        2
  •  1
  •   Gumbo    15 年前

    尝试此规则:

    RewriteCond %{HTTP_HOST} !^([^.]+\.)?example\.com$ [NC]
    RewriteCond %{HTTPS}s ^on(s)|
    RewriteRule ^ http%1://www.example.com%{REQUEST_URI} [L,R=301]
    
        3
  •  1
  •   bobince    15 年前

    你需要加强你的重写速度,使它们只匹配你想要匹配和更改的特定主机名,比如.com$226;和^(www.)?域名2 \.com$226_目前,他们都会匹配几乎所有的东西,所以他们会干涉。

    但是你必须在.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>
    
        4
  •  1
  •   MaxiWheat    15 年前

    这是否简单可行:

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