3

我正在尝试设置动态 vHost,但遇到了一些麻烦。它不允许我设置多个 ServerAlias。

<VirtualHost *:80>
        ServerAlias *.com
        ServerAdmin michael.ian.curry@gmail.com
        VirtualDocumentRoot /var/www/%1/production/html
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>
        LogLevel warn
</VirtualHost>

上面的 vHost 仅适用于 ' .com' 我需要它才能适用于 'www. .com' 和 '*.com' 我认为将 ServerAlias 设置为可以修复它,但它不起作用。

ServerAlias *.com www.*.com

如果您有任何见解,请回复

——迈克尔库里

==编辑 1==

例如 redcrusher.com 和 www.redcrusher.com

==编辑 2==

下面的代码也不起作用

ServerAlias www.*.com *.com
4

2 回答 2

14

弄清楚了!

'www.*.com' 必须在 '*.com' 之前执行 这是因为 ServerAlias 设置了一个动态域,并且必须在“较小”别名存在之前存在。

示例:'www.*.com'、'dev.*.com'、'asdf.*.com' THEN '*.com'

虚拟主机文件 [production.conf]:

<VirtualHost *:80>
    ServerAlias www.*.com
    VirtualDocumentRoot /var/www/%2/production/html
    ServerAdmin michael.ian.curry@gmail.com
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

    LogLevel warn
</VirtualHost>

<VirtualHost *:80>
    ServerAlias *.com
    VirtualDocumentRoot /var/www/%1/production/html
    ServerAdmin michael.ian.curry@gmail.com
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

    LogLevel warn
</VirtualHost>

我希望这可以帮助其他遇到此问题的人!

——迈克尔库里

于 2013-02-05T08:01:27.007 回答
4

你必须像这样使用

ServerAlias www.domain.com domain.com
ServerAlias *.domain.com

如果您想使用必须遵循命令的方式

ServerAlias www.*.com *.com 

问题是

VirtualDocumentRoot /var/www/%1/production/html

你使用一个动态的 VirtualDocumentRoot 这意味着

对于 redcrusher.com VirtualDocumentRoot 是

/var/www/redcrusher/production/html

对于 www.redcrusher.com,VirtualDocumentRoot 是

/var/www/www.redcrusher/production/html

我认为将 ServerAlias 拆分为三个部分可以解决

ServerAlias www.*.com
VirtualDocumentRoot /var/www/%1/production/html/
ServerAlias *.*.com
VirtualDocumentRoot /var/www/%2/production/html/%1 
ServerAlias *.com 
VirtualDocumentRoot /var/www/%1/production/html

我认为应该工作

虚拟文档根:

redcrusher.com

/var/www/redcrusher/production/html

www.redcrusher.com

/var/www/redcrusher/production/html/

sub.redcrusher.com

/var/www/redcrusher/production/html/sub
于 2013-02-05T05:48:32.990 回答