Я пытаюсь заставить правила mod_rewrite работать под apache 2.2 на Debian Lenny. Чтобы попытаться заставить его работать, я помещаю правила в /etc/apache2/mods-enabled/rewrite.load:
RewriteEngine On
RewriteRule http-poll/ http://jabberserver:5280/http-poll [P]
RewriteLog "/tmp/rewrite.log"
RewriteLogLevel 3
Однако я получаю ошибку 404, когда использую браузер для перехода к http: // localhost / http-опрос после перезапуска apache. Error.log содержит:
[Wed Jun 30 15:22:53 2010] [error] [client 127.0.0.1] File does not exist: /var/www/http-poll
"/tmp/rewrite.log" пуст.
Я включил модули (включая mod_rewrite) (a2enmod rewrite proxy_http)
Ни один из других ответов не объяснил, почему ваш журнал перезаписи пуст.
Вот моя догадка: если вы не включили директиву «RewriteOptions Inherit», глобальные директивы перезаписи не будут унаследованы директивами VirtualHost (что несовместимо с тем, как работает множество других конфигураций Apache).
Помимо включения параметра наследования, вы можете повторить соответствующие директивы Rewrite на виртуальном хосте, который вы тестируете.
Предложение в другом месте проверить вашу строку "LoadModule" не имеет отношения. Если бы этого не было, ваша конфигурация, скорее всего, была бы нарушена, и вместо этого вы бы получили такую ошибку:
«Неверная команда 'RewriteEngine', возможно, неправильно написана или определена модулем, не включенным в конфигурацию сервера»
Исключением может быть то, что вы обернули все свои директивы Rewrite в блоки «IfModule», чтобы они просто исчезли, когда модуль отсутствовал.
Я думаю, вам нужно указать абсолютный путь и убедиться, что шаблон находится в начале локального пути:
RewriteRule ^/http-poll/ http://jabberserver:5280/http-poll/ [P]
поскольку в противном случае правило перезаписи будет применяться снова, если тот же файл конфигурации Apache интерпретирует прокси.
Кроме того, если вы хотите перенаправить URL-адреса в / http-poll /, вы должны указать замены регулярных выражений:
RewriteRule ^/http-poll/(.*) http://jabberserver:5280/http-poll/$1 [P]
И, да, это определенно ошибка сервера qn.
Я заметил, что в вашем правиле перезаписи шаблон для сопоставления заканчивается косой чертой, а URL-адрес, к которому вы обращались, - нет. Попробуйте убрать косую черту с http-poll/
в RewriteRule
и посмотрите, работает ли это.
Разве mod_rewrite.load не должен содержать только такую строку?
LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so
В любом случае, у меня это сработает, если я добавлю правила перезаписи в конфигурацию сервера (<VirtualHost>
), но не в том случае, если они находятся в файле mod_rewrite.load (Ubuntu 8.04, Apache 2.2.8). Если вы не используете виртуальные хосты, попробуйте поместить их в <Directory>
раздел для корня вашего документа.