Come posso usare DocumentRoot e lo stato del server all'interno di un host virtuale Apache?


8

Ho questa configurazione di host virtuale come la prima in un elenco di host virtuali. È

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

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

Il resto degli host virtuali sono in basso ed espressi come *: 80.

Quando includo DocumentRoot in questo host virtuale, le richieste sul server http://localhost/server-statuscolpiscono sempre /index.php tramite le regole di riscrittura in /www/drupal5/.htaccess. Se rimuovo la dichiarazione DocumentRoot, le richieste di stato / server funzionano correttamente, ma il sito non è affatto disponibile http://localhost/.

Come posso andare http://localhost/server-statusa lavorare così come il sito in cui caricare http://localhost/?


Puoi pubblicare i contenuti di /www/drupal5/.htaccess? Si spera che sia possibile modificare le regole di riscrittura in modo che le richieste per / stato-server non vengano riscritte.
Steven lunedì

Il chiarimento di cui penso di aver bisogno è: è possibile per mod_rewrite sovrascrivere cosa succede a un percorso / server-status anche se è stato gestito in <Location>

Risposte:


12

Ho trovato la soluzione quando ho cercato su google "server-status mod_rewrite". Per coincidenza è stato risposto in un forum drupal: http://drupal.org/node/52511

L'aggiunta RewriteCond %{REQUEST_URI} !=/server-statusalla regola di riscrittura per reindirizzare tutto il traffico su /index.php l'ha risolto.

Molto confuso che mod_rewrite può riscrivere un uri che ha già impostato un gestore.


Grazie, funziona!
Luke Duda,

3

Se stai usando Apache 2.3 o versioni successive, dovresti anche essere in grado di usare il ENDflag nella voce VirtualHost, per evitare di dover modificare i file .htaccess.

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

Dovrebbe impedire alle regole successive di riscrivere le cose.


3

Basta aggiungere una voce vhost vuota all'inizio del file di configurazione del vhost, ad es

<VirtualHost *:80>
</VirtualHost>

2
Come risolverebbe la domanda originale?
Pothi Kalimuthu,

Apache sta impostando per impostazione predefinita sul primo host chiamato vhost, la loro installazione di Drupal, invece di andare alla pagina di stato del server. Un vhost vuoto interromperà l'elaborazione per / server-status dall'invio a Drupal e consentirà il caricamento della pagina di stato
xref
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.