使用Apache VirtualHost创建通配符子域

Sai*_*son 16 apache wildcard-subdomain virtualhost

我想要这种情况:

  1. 如果用户请求使用此URL:example.com或者www.example.com,用户将index.php在此目录中看到/home/admin1/public_html/

  2. 但是当用户请求使用其他子域(通配符)时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和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>
Run Code Online (Sandbox Code Playgroud)

小智 14

使用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>
Run Code Online (Sandbox Code Playgroud)

请注意,我没有对此进行测试,但它非常接近适用于我的解决方案.

我的解决方案的全部细节如下:http: //www.calcatraz.com/blog/wildcard-subdomains-in-apache-1422

  • “%1.example.com”将失败(“。”是一个元字符,在这种情况下必须后面跟一个整数)。解决方法可以是“%1.0.example.com”。 (2认同)

ton*_*o.j 9

试试这个:

NameVirtualHost *:80

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

<VirtualHost *:80>
  DocumentRoot /home/admin1/public_html/userweb/freediscount.example.com
  ServerName  other.example.com
  ServerAlias *.example.com
</VirtualHost>

<VirtualHost *:80>
  DocumentRoot /home/admin1/public_html/
  ServerName example.com
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

虚拟主机的顺序及其特殊性.