虚拟子域:每个用户一个子域

时间:2012-09-13 14:27:51

标签: php linux subdomain virtualhost

在我的网站上,我正在使用虚拟主机,因此我的用户可以拥有“user1.mydomain.com”,“user2.mydomain.com”等虚拟域名,...

问题是在像'user1.domain.com'这样的虚拟域上,索引页面总是与我的索引页面'http://mydomain.com'上的相同。

我想要做的是为域和子域提供两个不同的索引页。我的问题是,如何将子域重定向到'index2.php'(例如),并且仍然将子域看起来像'user1.mydomain.com'?

3 个答案:

答案 0 :(得分:2)

理想情况下,您可以为每个子域设置完全独立的文档目录。 apache中的vhost是要走的路。如果你想按照自己的方式(子域名重定向到单个文件),那么它的工作量会更多,但仍然可行。首先,使用通配符定义mod_vhost

<VirtualHost 111.22.33.55>
    DocumentRoot /www/subdomain
    ServerName www.mydomain.com
    ServerAlias *.mydomain.com

    ...
</VirtualHost>

然后在VirtualHost设置重写规则中使用mod_rewrite

<Location "/">
    RewriteCond %{HTTP_HOST} ^user1.mydomain.com$
    RewriteRule ^\/$ http://www.mydomain.com/index2.php [R=301,L]
    RewriteRule ^\/index.php$ http://www.mydomain.com/index2.php [R=301,L]

    RewriteCond %{HTTP_HOST} ^user2.mydomain.com$
    RewriteRule ^\/$ http://www.mydomain.com/index3.php [R=301,L]
    RewriteRule ^\/index.php$ http://www.mydomain.com/index3.php [R=301,L]

    ...
</Location>

但请注意,这只适用于//index.php子域请求。如果你打算做更多的事情,你最好为每个子域设置单独的文档根目录。

答案 1 :(得分:0)

也许你对此感兴趣。

http://httpd.apache.org/docs/2.2/mod/mod_vhost_alias.html#virtualdocumentroot

这允许在Apache服务器中自动使用基于子域

的文档根目录

答案 2 :(得分:0)

我会用php来检查网址。 如果它是子域,则包括index2.php,否则包括index1.php

在不知道运行的服务器的情况下,这是我能想到的唯一方法。