在 Apache 中设置通配符子域

问题描述 投票:0回答:1

帮我配置一下逻辑:当请求

example.ru
时,应该显示
var/www/example.ru
的内容。当请求
*.example.ru
时,应显示 var/www/subdomain 中的内容(其中 * 代表任何子域,如
admin.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} ^(.+)\.mysite\.ru$ [NC]
    RewriteRule ^(.*)$ /var/www/subdomain/$1 [L]

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
apache redirect
1个回答
0
投票

只需将其分成两个虚拟主机并为每个虚拟主机设置

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>
© www.soinside.com 2019 - 2024. All rights reserved.