【问题标题】:Wild card Sub-domain using virtual hosts使用虚拟主机的通配符子域
【发布时间】:2013-12-31 08:23:23
【问题描述】:

有人可以向我解释一下这实际上是如何工作的。这是 Apache 的 httpd.conf 文件中的代码。

<VirtualHost *:80>
DocumentRoot "somepath"
ServerAlias mobile.mysite.com
ServerName mobile.mysite.com 
</VirtualHost>

<VirtualHost *:80>
DocumentRoot "somepath"
ServerAlias *.mysite.com
ServerName mysite.com 
</VirtualHost> 

我想做一些事情,比如如果它的 mobile.mysite.com 应该转到 mobile.mysite.com。如果是 else.mysite.com,那么它应该转到 mysite.com。上面的代码是否执行相同的操作?有什么建议吗?

【问题讨论】:

    标签: apache subdomain config virtualhost


    【解决方案1】:

    不,此代码不执行任何上述任务。为此,您必须使用 mod_rewrite。

    修改您的 httpd.conf 文件以包含 mod_rewrite.so,然后编写如下内容:

    RewriteEngine On
    
    RewriteCond %{HTTP_HOST} !^www [NC]
    RewriteRule $ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R]
    

    上述重写规则的作用是检查主机名是否以www开头,如果不是,则在主机名中包含www.并重定向。

    你可以写一个类似这样的重写规则。

    阅读更多关于重写规则here

    【讨论】:

    • 谢谢。问题是我想将我的所有子域都指向 mysite.com,除了移动网站。那我该怎么做呢?