在 Apache 中设置通配符子域

Setting up a wildcard subdomain in Apache

提问人:Денис 提问时间:11/6/2023 最后编辑:Stephen OstermillerДенис 更新时间:11/7/2023 访问量:22

问:

帮我配置以下逻辑:请求时,应显示 from 的内容。请求时,应显示 var/www/subdomain 中的内容(其中 * 表示任何子域,如 )。example.ruvar/www/example.ru*.example.ruadmin.example.ru

我像这样尝试,但它不起作用:

<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName example.ru
    ServerAlias *.example.ru
    DocumentRoot /var/www/example.ru

    RewriteEngine On
    RewriteCond %{HTTP_HOST} !=example.ru
    RewriteCond %{HTTP_HOST} ^(.+)\.example\.ru$ [NC]
    RewriteRule ^(.*)$ /var/www/subdomain/$1 [L]

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Apache 重定向

评论


答:

0赞 Stephen Ostermiller 11/7/2023 #1

只需将其分解为两个虚拟主机,并为每个虚拟主机设置即可。完全不需要使用重写规则。DocumentRoot

<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName example.ru
    DocumentRoot /var/www/example.ru
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName sub.example.ru
    ServerAlias *.example.ru
    DocumentRoot /var/www/subdomain
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>