Como posso usar o DocumentRoot e o status do servidor em um host virtual Apache?

8

Eu tenho essa configuração de host virtual como a primeira de uma lista de hosts virtuais. Isto é

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

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

O restante dos hosts virtuais está abaixo e expresso como *: 80.

Quando incluo o DocumentRoot nesse host virtual, solicitações no servidor para http://localhost/server-statussempre pressionar /index.php por meio de regras de reescrita em /www/drupal5/.htaccess. Se eu remover a declaração DocumentRoot, as solicitações / server-status funcionarão bem, mas o site não estará disponível http://localhost/.

Como posso http://localhost/server-statustrabalhar, bem como o site para carregar http://localhost/?


fonte
Você pode postar o conteúdo de /www/drupal5/.htaccess? Felizmente, é possível modificar as regras de reescrita para que as solicitações de / server-status não sejam reescritas.
Steven segunda-feira
O esclarecimento Eu acho que preciso é: é possível para mod_rewrite para substituir o que acontece com um caminho de status do servidor / mesmo que ele foi tratado no <Location>

Respostas:

12

Encontrei a solução quando pesquisei 'server-status mod_rewrite'. Coincidentemente, foi respondido em um fórum drupal: http://drupal.org/node/52511

A adição RewriteCond %{REQUEST_URI} !=/server-statusà regra de reescrita para redirecionar todo o tráfego para /index.php foi corrigida.

Muito confuso que mod_rewrite possa reescrever uma uri que já esteja configurada como manipulador.


fonte
Obrigado, funciona!
Luke Duda
3

Se você estiver usando o Apache 2.3 ou superior, também poderá usar o ENDsinalizador na entrada do VirtualHost, para evitar a necessidade de modificar os arquivos .htaccess.

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

Deve impedir que as regras subsequentes reescrevam as coisas.

cincodenada
fonte
3

Basta adicionar uma entrada em branco do vhost na parte superior do arquivo de configuração do vhost, por exemplo

<VirtualHost *:80>
</VirtualHost>
Nomad77
fonte
2
Como isso resolveria a questão original?
Pothi Kalimuthu 9/10
O Apache está padronizando os OPs primeiro nomeados vhost, sua instalação do Drupal, em vez de ir para a página de status do servidor. Um vhost vazio vai parar o processamento para-status do servidor / de serem enviados para Drupal e permitir a página de status de carga
xref