Назад | Перейти на главную страницу

Как мне изменить URL-адреса для работы на Apache 2.2 в Debian Lenny

Я пытаюсь заставить правила 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> раздел для корня вашего документа.