帮我配置一下逻辑:当请求
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>
只需将其分成两个虚拟主机并为每个虚拟主机设置
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>