apache 虚拟主机未考虑在内

apache 虚拟主机未考虑在内

我有多个域名,并且我设想每个域名都应该有一个 VirtualHost。glpi.localnet.lan 从未加载,而 web.localnet.lan 始终显示,即使我在 Web 浏览器中输入“glpi.localnet.lan”。

站点启用中的 glpi.localnet.lan.conf:

<VirtualHost *:80>

   ServerName  glpi.localnet.lan
    ServerAdmin [email protected]
   ServerAlias glpi

   Alias /glpi/ /var/www/glpi/
   RedirectMatch ^/$ /glpi/
   DocumentRoot /var/www/glpi

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

   <Directory /var/www/glpi>
      Options None
      AllowOverride None
   </Directory>

   <Directory /var/www/glpi/files>
      Options None
      AllowOverride None
      Order allow,deny
      deny from all
   </Directory>

   LogLevel  debug
   CustomLog ${APACHE_LOG_DIR}/glpi-access.log combined
   ErrorLog  ${APACHE_LOG_DIR}/glpi-error.log

</VirtualHost>

这也是在 sites-enabled 下的 web.localnet.lan.conf:

<VirtualHost *:80>

   ServerAdmin [email protected]
   ServerName  web.localnet.lan
   ServerAlias web

   DocumentRoot /var/www/html

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

   <Directory /var/www/html>
      Options None
      AllowOverride None
   </Directory>

   LogLevel  debug
   CustomLog ${APACHE_LOG_DIR}/web-access.log combined
   ErrorLog  ${APACHE_LOG_DIR}/web-error.log

</VirtualHost>

我怎样才能完成以下事情:

  • 当我输入 glpi.localnet.lan 时,配置文件glpi.localnet.lan.conf被加载,
  • 当我进入web.localnet.lan时,配置文件web.localnet.lan.conf被加载。

单独来看,每个配置文件都运行良好。将两者结合起来,只会考虑一个,而配置文件日志文件中找到的请求也会被考虑(即使不是预期的请求)。(似乎取决于我先用a2ensite命令添加哪一个?!)。

非常感谢您的帮助,请随时询问我可能忘记提供的更多详细信息。

答案1

我可能错了,但是如果你删除RedirectMatchglpi vhost 中的行,它会起作用吗?在我看来这不对。

来自Apache 文档

重定向匹配:

与 Alias 和 AliasMatch 之间的差异相关的考虑也适用于 Redirect 和 RedirectMatch 之间的差异。

别名匹配:

Alias 和 AliasMatch 之间的一个细微差别是 Alias 会自动将 URI 的任何其他部分(匹配部分以外的部分)复制到右侧文件路径的末尾,而 AliasMatch 则不会。这意味着在几乎所有情况下,您都希望正则表达式从头到尾匹配整个请求 URI,并在右侧使用替换。

换句话说,仅仅将 Alias 改为 AliasMatch 不会产生相同的效果。至少,您需要在正则表达式的开头添加 ^,在结尾添加 (.*)$,并在替换的结尾添加 $1。

该行可能会以您意想不到的方式重定向请求。

如果 Apache 无法将请求与虚拟主机匹配,它将使用列出的第一个虚拟主机。根据您的 Apache 版本和平台,可能配置了一个默认虚拟主机,用作/var/www/html文档根目录。

由于您的webvhost 使用相同的文档根目录,因此这可能就是您最终看到的内容。

相关内容