使用别名设置 Apache2 虚拟主机的最佳实践?

使用别名设置 Apache2 虚拟主机的最佳实践?

我在 Debian Squeeze 服务器中设置我的 Apache2 虚拟主机,方式如下:

文件名:whatever.mydomain.com

Alias /whatever /var/www/whatever.mydomain.com

<VirtualHost *:80>
        ServerAlias whatever.mydomain.com
        ServerAdmin [email protected]
        VirtualDocumentRoot /var/www/%0 

        ErrorLog /var/log/apache2/whatever.mydomain.com-error.log
        CustomLog /var/log/apache2/whatever.mydomain.com-access.log combined
</VirtualHost>

<Directory /var/www/whatever.mydomain.com>
        AuthPAM_Enabled On
        AuthType basic
        AuthName "Authorization Required to proceed"
        AuthBasicAuthoritative off
        AuthUserFile /dev/null
        Require valid-user
</Directory>

我想为同一个网站提供两个 URL:whatever.mydomain.com 和 www.mydomain.com/whatever

因此,为了解决这个问题,我在文件开头配置了 Alias /whatever /var/www/whatever.mydomain.com。但我不知道这是否是一种好的做法。那么 VirtualHost 设置呢?有什么可以做得更好的吗?

最后一个问题:有没有办法在文件内部使用变量?例如,在 VirtualDocumentRoot 以外的其他地方重复 %0?

提前致谢,

编辑:我遇到了一个新问题。使用全局别名,我的所有虚拟主机都将响应 /whatever 别名,而我只希望在 www.mydomain.com 上应用别名。我目前正在努力使用 RedirectMatch,但没有成功。我使用重定向而不是别名,因为使用别名时,访问和错误日​​志不会进入虚拟主机日志文件。

答案1

您可能希望将别名放在它自己的虚拟主机中。例如:

<VirtualHost *:80>
    ServerName www.mydomain.com
    ServerAdmin [email protected]
    DocumentRoot /var/www/whatever.mydomain.com

    Alias /whatever /var/www/whatever.mydomain.com
    ErrorLog /var/log/apache2/www.mydomain.com-error.log
    CustomLog /var/log/apache2/www.mydomain.com-access.log combined
</VirtualHost>

这就是我要做的事情,但当然,在 Apache 中有很多方法可以正确完成任务。如果它有效,那就有效......

至于你的最后一个问题:你实际上不能在配置文件中使用变量(除了少数例外),但有些第三方模块可能值得研究。其中一个是 mod_macro:http://people.apache.org/~fabien/mod_macro/ 另一个可用于使配置文件更具动态性的工具是 mod_perl,但这是一个非常高级的主题。

相关内容