У меня эта настройка виртуального хоста является первой в списке виртуальных хостов. это
<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/
?
Нашел решение, когда я googledd 'server-status mod_rewrite'. По совпадению, на форуме drupal ответили: http://drupal.org/node/52511
Добавление RewriteCond %{REQUEST_URI} !=/server-status
к правилу перезаписи для перенаправления всего трафика на /index.php исправил это.
Очень сбивает с толку то, что mod_rewrite может переписать uri, для которого уже установлен обработчик.
Если вы используете Apache 2.3 или выше, вы также сможете использовать END
в записи VirtualHost, чтобы избежать изменения файлов .htaccess.
RewriteCond %{REQUEST_URI} /server-status
RewriteRule ^ - [END]
Должен помешать последующим правилам переписывать вещи.
Просто добавьте пустую запись vhost в начало файла конфигурации vhost, например.
<VirtualHost *:80>
</VirtualHost>