Comment puis-je utiliser DocumentRoot et l'état du serveur au sein d'un hôte virtuel Apache?

8

J'ai cette configuration d'hôte virtuel comme la première d'une liste d'hôtes virtuels. C'est

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

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

Les autres hôtes virtuels sont ci-dessous et exprimés en *: 80.

Lorsque http://localhost/server-statusj'inclus DocumentRoot dans cet hôte virtuel, les requêtes sur le serveur pour toujours frapper /index.php via les règles de réécriture dans /www/drupal5/.htaccess. Si je supprime la déclaration DocumentRoot, les demandes / server-status fonctionnent correctement, mais le site n'est pas du tout disponible http://localhost/.

Comment puis-je me rendre http://localhost/server-statusau travail ainsi que le site de chargement http://localhost/?


la source
Pouvez-vous publier le contenu de /www/drupal5/.htaccess? Avec un peu de chance, il est possible de modifier les règles de réécriture afin que les requêtes pour / server-status ne soient pas réécrites.
Steven lundi
La clarification dont je pense avoir besoin est la suivante: est-il possible que mod_rewrite écrase ce qui arrive à un chemin / server-status même s'il a été géré dans <Location>

Réponses:

12

J'ai trouvé la solution lorsque j'ai googlé «server-status mod_rewrite». Par coïncidence, il a été répondu dans un forum drupal: http://drupal.org/node/52511

L'ajout RewriteCond %{REQUEST_URI} !=/server-statusà la règle de réécriture pour rediriger tout le trafic vers /index.php l'a corrigé.

Très déroutant que mod_rewrite peut réécrire un uri qui a déjà défini un gestionnaire.


la source
Merci, ça marche!
Luke Duda
3

Si vous utilisez Apache 2.3 ou supérieur, vous devriez également pouvoir utiliser l' ENDindicateur dans votre entrée VirtualHost, pour éviter d'avoir à modifier les fichiers .htaccess.

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

Devrait empêcher les règles suivantes de réécrire les choses.

cincodenada
la source
3

Ajoutez simplement une entrée vhost vierge en haut du fichier de configuration vhost, par exemple

<VirtualHost *:80>
</VirtualHost>
Nomad77
la source
2
Comment cela résoudrait-il la question d'origine?
Pothi Kalimuthu,
Apache utilise par défaut les OPs nommés en premier vhost, leur installation Drupal, au lieu d'aller sur la page d'état du serveur. Un vhost vide arrêtera le traitement de / server-status d'être envoyé à Drupal et permettra à la page d'état de se charger
xref