Как я могу использовать DocumentRoot и статус сервера в виртуальном хосте Apache?

8

Я установил этот виртуальный хост как первый в списке виртуальных хостов. это

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

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

Остальные виртуальные хосты указаны ниже и обозначены *: 80.

Когда я включаю DocumentRoot в этот виртуальный хост, на сервере http://localhost/server-statusвсегда запрашивается /index.php через правила перезаписи в /www/drupal5/.htaccess. Если я удалю декларацию DocumentRoot, запросы / server-status будут работать нормально, но тогда сайт вообще не будет доступен http://localhost/.

Как я могу получить http://localhost/server-statusработу, а также сайт для загрузки http://localhost/?


источник
Можете ли вы опубликовать содержимое /www/drupal5/.htaccess? Надеемся, что можно изменить правила перезаписи, чтобы запросы / server-status не переписывались.
Стивен Понедельник,
Я думаю, что мне нужно разъяснение: возможно ли mod_rewrite перезаписать то, что происходит с путем / server-status, даже если он был обработан в <Location>

Ответы:

12

Нашел решение, когда я погуглил 'server-status mod_rewrite'. По случайному совпадению, на форуме drupal ответили: http://drupal.org/node/52511

RewriteCond %{REQUEST_URI} !=/server-statusИсправлено добавление в правило перезаписи для перенаправления всего трафика в /index.php.

Очень странно, что mod_rewrite может переписать URI, который уже установил обработчик.


источник
Спасибо, это работает!
Люк Дуда
3

Если вы используете Apache 2.3 или выше, вы также должны иметь возможность использовать ENDфлаг в вашей записи VirtualHost, чтобы избавить от необходимости изменять файлы .htaccess.

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

Следует помешать последующим правилам переписывать вещи.

cincodenada
источник
3

Просто добавьте пустую запись vhost в начало файла конфигурации vhost, например

<VirtualHost *:80>
</VirtualHost>
Nomad77
источник
2
Как это решит исходный вопрос?
Поти Калимуту
Apache по умолчанию использует OP, сначала названный vhost, их установку Drupal, вместо того, чтобы переходить на страницу состояния сервера. Пустой vhost остановит обработку для / server-status от отправки в Drupal и позволит загрузить страницу статуса
xref