我正在尝试设置一个 apache 虚拟主机文件,将 xyz.mycompany.com 路由到 /var/www/html/development/xyz/public
这是我的硬编码版本。有没有办法用变量交换“xyz”?
<VirtualHost *:80>
ServerName xyz.mycompany.com
ServerAlias xyz.mycompany.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/development/xyz/public
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory /var/www/html/development/xyz>
AllowOverride All
Options -Indexes +FollowSymLinks +MultiViews
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
答案1
请也阅读以下这篇文章:Apache2 动态 documentroot 取决于 URL
你可以这样做:
<VirtualHost *:80>
ServerName xyz.mycompany.com
ServerAlias *.mycompany.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/development/%1/public
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory /var/www/html/development>
AllowOverride All
Options -Indexes +FollowSymLinks +MultiViews
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
关于<Directory>
部分,我认为您可以为整个开发目录设置您的选项。
答案2
mod_macro
可以在配置文件中进行变量替换。但是您的主题说的是“通配符替换”,Apache 配置文件当然可以处理*
。在您的例子中,ServerAlias *.mycompany.com
会将 mycompany.com 上任何子域的任何主机标头发送到您的/var/www/html/development/xyz
目录中。