如何在 Apache 虚拟主机中使用 DocumentRoot 和 server-status?

8 virtualhost apache-2.2

我将此虚拟主机设置为虚拟主机列表中的第一个。这是

<VirtualHost localhost:80>
ServerName localhost
DocumentRoot "/www/drupal5"

<Location /server-status>
    SetHandler server-status
    Order Deny,Allow
    Allow from localhost
</Location>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

其余虚拟主机如下所示,表示为 *:80。

当我在这个虚拟主机中包含 DocumentRoot 时,服务器上的请求http://localhost/server-status总是通过 /www/drupal5/.htaccess 中的重写规则命中 /index.php。如果我删除 DocumentRoot 声明,/server-status 请求工作正常,但该站点根本不可用http://localhost/

我怎样才能开始http://localhost/server-status工作以及加载站点http://localhost/

小智 13

当我搜索“服务器状态 mod_rewrite”时找到了解决方案。巧合的是,它在一个 drupal 论坛中得到了回答:http : //drupal.org/node/52511

添加RewriteCond %{REQUEST_URI} !=/server-status到重写规则以将所有流量重定向到 /index.php 修复了它。

非常令人困惑的是 mod_rewrite 可以重写已经设置了处理程序的 uri。


小智 5

只需在虚拟主机配置文件的顶部添加一个空白虚拟主机条目,例如

<VirtualHost *:80>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

  • 它将如何解决最初的问题? (2认同)