我将此虚拟主机设置为虚拟主机列表中的第一个。它是
<VirtualHost localhost:80>
ServerName localhost
DocumentRoot "/www/drupal5"
<Location /server-status>
SetHandler server-status
Order Deny,Allow
Allow from localhost
</Location>
</VirtualHost>
其余虚拟主机如下,并表示为 *:80。
当我将 DocumentRoot 包含在此虚拟主机中时,服务器上的请求始终http://localhost/server-status
通过 /www/drupal5/.htaccess 中的重写规则命中 /index.php。如果我删除 DocumentRoot 声明,/server-status 请求可以正常工作,但该网站根本无法使用http://localhost/
。
我怎样才能开始http://localhost/server-status
工作以及加载网站http://localhost/
?
答案1
当我在 Google 上搜索“server-status mod_rewrite”时,找到了解决方案。巧合的是,drupal 论坛上也有人回答过这个问题:http://drupal.org/node/52511
添加RewriteCond %{REQUEST_URI} !=/server-status
重写规则以将所有流量重定向到 /index.php 即可修复该问题。
非常令人困惑的是,mod_rewrite 可以重写已经设置处理程序的 uri。
答案2
只需在 vhost 配置文件顶部添加一个空白的 vhost 条目即可,例如
<VirtualHost *:80>
</VirtualHost>
答案3
如果您使用的是 Apache 2.3 或更高版本,您还应该能够END
在 VirtualHost 条目中使用该标志,以免修改 .htaccess 文件。
RewriteCond %{REQUEST_URI} /server-status
RewriteRule ^ - [END]
应该防止后续规则重写事物。