如何在Apache虚拟主机中使用DocumentRoot和服务器状态?


8

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

<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/


您可以张贴的内容/www/drupal5/.htaccess吗?希望可以修改重写规则,以便不重写对/ server-status的请求。
史蒂文

我认为我需要澄清的是:即使在<Location>中处理了mod_rewrite是否有可能覆盖/ server-status路径发生的问题

Answers:


12

我在Google搜索“ server-status mod_rewrite”时找到了解决方案。巧合的是,它在一个drupal论坛中得到了回答:http : //drupal.org/node/52511

RewriteCond %{REQUEST_URI} !=/server-status用于将所有流量重定向到/index.php的重写规则中进行了修复。

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


谢谢,它有效!
路加杜达

3

如果您使用的是Apache 2.3或更高版本,则还应该能够END在VirtualHost条目中使用该标志,从而不必修改.htaccess文件。

RewriteCond %{REQUEST_URI} /server-status
RewriteRule ^ - [END]

应该防止后续规则重写事物。


3

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

<VirtualHost *:80>
</VirtualHost>

2
它将如何解决最初的问题?
Pothi Kalimuthu 2013年

Apache默认使用第一个名为vhost的OP,即它们的Drupal安装,而不是转到服务器状态页面。空的虚拟主机将停止将/ server-status的处理发送到Drupal,并允许加载状态页
xref
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.