Как я могу использовать 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]

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


3

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

<VirtualHost *:80>
</VirtualHost>

2
Как это решит исходный вопрос?
— Поти Калимуту

Apache по умолчанию использует OP, сначала названный vhost, их установку Drupal, вместо того, чтобы переходить на страницу состояния сервера. Пустой vhost остановит обработку для / server-status от отправки в Drupal и позволит загрузить страницу статуса
— xref
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.