为特定的 ServerAlias 设置 Apache 别名

Tat*_*nen 5 alias serveralias apache-2.2

目前,我有一个 VirtualHost 定义如下:

<VirtualHost *:80>
    ServerName mydomain.com
    ServerAlias otherdomain.com
    DocumentRoot /var/www/project/
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

如何制作仅影响otherdomain.com域的别名:

Alias /sub /var/www/other
Run Code Online (Sandbox Code Playgroud)

以便:

http://otherdomain.com/sub -> /var/www/other
http://mydomain.com/sub -> /var/www/project/sub
Run Code Online (Sandbox Code Playgroud)

有问题的 VirtualHost 实际上并没有那么简单,所以我不想为此单独制作 VirtualHost。我可以在 VirtualHost 中使用任何条件表达式或类似的东西吗?类似的东西:

<VirtualHost *:80>
    ...
    <If ServerName=otherdomain.com>
        Alias /sub /var/www/other
    </If>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

小智 5

不,您不能在 If 中使用别名。

If "%{HTTP_HOST}
Run Code Online (Sandbox Code Playgroud)

与 Alias 不兼容,使用它会导致 Apache 无法启动并输出错误消息:

Alias not allowed here
Run Code Online (Sandbox Code Playgroud)

您应该使用相应的名称创建另一个 VirtualHost,并使用您的别名进行配置。


cjc*_*cjc 1

以下是 Apache 文档的相关部分:

http://httpd.apache.org/docs/trunk/mod/core.html#if

http://httpd.apache.org/docs/trunk/expr.html

在这种情况下,类似这样的事情应该有效:

<If "%{HTTP_HOST} == 'example.com'">
    Alias /sub /var/www/other
</If>
Run Code Online (Sandbox Code Playgroud)

我相信您需要 Apache 2.2 或更高版本才能实现“If”功能。