¿Cómo puedo usar DocumentRoot y el estado del servidor dentro de un host virtual Apache?

8

Tengo esta configuración de host virtual como la primera de una lista de hosts virtuales. Está

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

<Location /server-status>
    SetHandler server-status
    Order Deny,Allow
    Allow from localhost
</Location>
</VirtualHost>

El resto de los hosts virtuales están a continuación y se expresan como *: 80.

Cuando http://localhost/server-statusincluyo DocumentRoot en este host virtual, las solicitudes en el servidor siempre presionan /index.php a través de las reglas de reescritura en /www/drupal5/.htaccess. Si elimino la declaración de DocumentRoot, las solicitudes / server-status funcionan bien, pero el sitio no está disponible en absoluto http://localhost/.

¿Cómo puedo llegar http://localhost/server-statusal trabajo y al sitio para cargar http://localhost/?


fuente
¿Puedes publicar el contenido de /www/drupal5/.htaccess? Con suerte, es posible modificar las reglas de reescritura para que las solicitudes de / server-status no se reescriban.
Steven lunes
La aclaración que creo que necesito es: ¿es posible que mod_rewrite sobrescriba lo que sucede con una ruta / estado del servidor a pesar de que se haya manejado en <Location>

Respuestas:

12

Encontré la solución cuando busqué en Google 'server-status mod_rewrite'. Casualmente se respondió en un foro de drupal: http://drupal.org/node/52511

Agregar RewriteCond %{REQUEST_URI} !=/server-statusa la regla de reescritura para redirigir todo el tráfico a /index.php lo arregló.

Muy confuso que mod_rewrite puede reescribir una uri que ya ha configurado un controlador.


fuente
Gracias, funciona!
Luke Duda
3

Si está utilizando Apache 2.3 o superior, también debería poder usar el ENDindicador en su entrada VirtualHost, para evitar tener que modificar los archivos .htaccess.

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

Debe evitar que las reglas posteriores reescriban cosas.

cincodenada
fuente
3

Simplemente agregue una entrada de vhost en blanco en la parte superior del archivo de configuración de vhost, por ejemplo

<VirtualHost *:80>
</VirtualHost>
Nomad77
fuente
2
¿Cómo resolvería la pregunta original?
Pothi Kalimuthu
Apache está predeterminado en los OP primero llamados vhost, su instalación de Drupal, en lugar de ir a la página de estado del servidor. Un vhost vacío detendrá el procesamiento de / server-status de ser enviado a Drupal y permitirá que se cargue la página de estado
xref