Apache 虚拟主机文件中的通配符替换

Apache 虚拟主机文件中的通配符替换

我正在尝试设置一个 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目录中。

相关内容