我想遇到这种情况:


如果用户使用以下URL请求:example.comwww.example.com
用户将在此目录index.php中看到/home/admin1/public_html/
但是当用户使用其他子域(通配符)请求时,例如:freediscount.example.com,用户将在此路径中看到index.php/home/admin1/public_html/userweb/freediscount.example.com


我的主机上的技术支持建议我使用此方法:http://www.wiredstudios.com/php-programming/setting-up-wildcard-dns-for-subdomains-on-cpanel.html

根据该教程,PHP有了一项新工作...当用户请求具有子域时,可以在特定文件夹上重定向。我不喜欢这种方法。对我来说,Apache可以处理这个问题会更好。

这种方法几乎接近我所需要的:Virtualhost For Wildcard Subdomain and Static Subdomain

但是,我在VirtualHost设置上有问题,如何针对这种情况正确创建VirtualHost

这是我已经完成但没有成功的事情:

## I think this one is for www or without www, automatically generated with WHM
<VirtualHost xx.xx.xx.xx:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /home/admin1/public_html
</VirtualHost>

## Here's what I'm trying to add
<VirtualHost xx.xx.xx.xx:80>
    ServerName example.com
    DocumentRoot /home/admin1/public_html/userweb/*
</VirtualHost>

最佳答案

使用Apache虚拟主机绝对可以使用通配符子域。

我有基本相同的要求,并设法使其与Apache的mod_vhost_alias.so模块一起使用。在您的http-vhosts.conf文件中尝试以下操作:

DocumentRoot "/home/admin1/public_html/userweb/"
<Directory "/home/admin1/public_html/userweb/">
    Options None
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

<VirtualHost *:80>
    DocumentRoot /home/admin1/public_html/
    ServerName www.example.com
</VirtualHost>

<VirtualHost *:80>
    VirtualDocumentRoot /home/admin1/public_html/userweb/%1.example.com/
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot /home/admin1/public_html/
    ServerName example.com
</VirtualHost>


请注意,我尚未对此进行测试,但是它非常接近对我有用的解决方案。

我的解决方案的完整详细信息在这里:
http://www.calcatraz.com/blog/wildcard-subdomains-in-apache-1422

10-07 19:40
查看更多