Apache VirtualHosts 异常

Apache VirtualHosts 异常

我的 Debian 机器上有以下配置文件:

<VirtualHost *:80>
    ServerAdmin [email protected]

    VirtualDocumentRoot /var/workspace/www/%2_%3/%1

    <Directory />
            Options FollowSymLinks
            AllowOverride None
    </Directory>

    <Directory /var/workspace/www/>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride All
            Order allow,deny
            allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

这对于自动化来说非常棒 - 我只需在特定路径和域中创建一个目录就可以开始工作。

但有时我需要启动应用程序,其文档根位于其他地方(通常是 www 目录或其他目录),我该如何指定此 VirtualHosts 并继续使用旧的自动 VirtualHosts?

当我添加例如这个:

<VirtualHost *:80>
  ServerName www.phabricator.com.local
  DocumentRoot /var/workspace/www/phabricator_com/www/webroot

  RewriteEngine on
  RewriteRule ^/rsrc/(.*)     -                       [L,QSA]
  RewriteRule ^/favicon.ico   -                       [L,QSA]
  RewriteRule ^(.*)$          /index.php?__path__=$1  [L,QSA]

  SetEnv PHABRICATOR_ENV custom/socialbakers
</VirtualHost>

它路由所有请求/var/workspace/www/phabricator_com/www/webroot并忽略其他虚拟主机(如上所述)。

为什么?

答案1

确保已启用允许命名虚拟主机的指令。我的意思是:

名称虚拟主机 *:80

...在您的 /etc/httpd/conf/httpd.conf 文件中。

答案2

您确定在 之后提供了正确的名称ServerName吗?我的意思是,它以 结尾.local;它是 HTTP 请求Host标头所包含的内容吗?如果HostHTTP 请求中的标头与任何基于名称的虚拟主机都不匹配(或者请求没有Host标头),则将使用第一个虚拟主机。

相关内容