Wie kann ich DocumentRoot und den Serverstatus in einem virtuellen Apache-Host verwenden?

8

Ich habe dieses virtuelle Host-Setup als erstes in einer Liste von virtuellen Hosts. Es ist

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

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

Der Rest der virtuellen Hosts ist unten aufgeführt und wird als *: 80 ausgedrückt.

Wenn ich DocumentRoot in diesen virtuellen Host einbinde, fordert der Server auf, http://localhost/server-statusimmer /index.php durch Umschreiberegeln in /www/drupal5/.htaccess zu drücken. Wenn ich die DocumentRoot-Deklaration entferne, funktionieren / server-status-Anforderungen einwandfrei, aber die Site ist überhaupt nicht verfügbar http://localhost/.

Wie kann ich http://localhost/server-statuszur Arbeit kommen und die Site laden http://localhost/?


quelle
Können Sie den Inhalt von posten /www/drupal5/.htaccess? Hoffentlich ist es möglich, die Umschreiberegeln so zu ändern, dass Anforderungen für / server-status nicht neu geschrieben werden.
Steven Montag
Die Klarstellung, die ich für nötig halte, lautet: Ist es möglich, dass mod_rewrite überschreibt, was mit einem / server-

Antworten:

12

Ich habe die Lösung gefunden, als ich 'Serverstatus mod_rewrite' gegoogelt habe. Zufälligerweise wurde es in einem Drupal-Forum beantwortet: http://drupal.org/node/52511

Das Hinzufügen RewriteCond %{REQUEST_URI} !=/server-statuszur Umschreiberegel zum Umleiten des gesamten Datenverkehrs zu /index.php hat das Problem behoben.

Sehr verwirrend, dass mod_rewrite eine URL umschreiben kann, die bereits einen Handler gesetzt hat.


quelle
Danke, es funktioniert!
Luke Duda
3

Wenn Sie Apache 2.3 oder höher verwenden, sollten Sie auch das ENDFlag in Ihrem VirtualHost-Eintrag verwenden können, um zu vermeiden, dass Sie die .htaccess-Dateien ändern müssen.

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

Sollte verhindern, dass die nachfolgenden Regeln Dinge umschreiben.

cincodenada
quelle
3

Fügen Sie einfach einen leeren vhost-Eintrag oben in die vhost-Konfigurationsdatei ein, z

<VirtualHost *:80>
</VirtualHost>
Nomad77
quelle
2
Wie würde es die ursprüngliche Frage lösen?
Pothi Kalimuthu
Apache verwendet standardmäßig die OPs mit dem ersten Namen vhost, deren Drupal-Installation, anstatt zur Serverstatusseite zu wechseln. Ein leerer vhost verhindert, dass die Verarbeitung für / server-status an Drupal gesendet wird, und ermöglicht das Laden der
Statusseite