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

问题在于,在虚拟域(例如“user1.domain.com”)上,索引页面始终与索引页面“http://mydomain.com”上的相同。

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

最佳答案

理想情况下,您将为每个子域设置完全独立的文档目录。 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请求。如果您打算做更多的事情,那么最好为每个子域设置单独的文档根目录。

关于php - 虚拟子域: one subdomain per user,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12408582/

10-09 17:16
查看更多