Apache mod_rewrite включен, но не работает - PullRequest
3 голосов
/ 25 апреля 2011

Борьба второго дня с проблемами с использованием mod_rewrite.

Системная ОС: Windows XP HTTP-сервер: Apache 2.2 httpd

пара связанных строк из httpd.conf

LoadModule rewrite_module modules/mod_rewrite.so
LoadModule proxy_module modules/mod_proxy.so
DocumentRoot "N:/Web-dev/www"

<Directory "/">
     Options Indexes +FollowSymLinks MultiViews
     AllowOverride All
     Order allow,deny
     Allow from all
</Directory>

<Directory "N:/Web-dev/www">
    Options Indexes +FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

.htaccess содержит:

RewriteEngine on
RewriteRule ^alice.html$ bob.html

php info сообщает

Loaded Modules  core mod_win32 mpm_winnt http_core mod_so mod_actions mod_alias mod_asis mod_auth_basic mod_authn_default mod_authn_file mod_authz_default mod_authz_groupfile mod_authz_host mod_authz_user mod_autoindex mod_cgi mod_dir mod_env mod_include mod_isapi mod_log_config mod_mime mod_negotiation mod_setenvif mod_rewrite mod_proxy mod_php5 

Оба файла существуют, загружая alice.html, он все равно загружает его, в rewrite.log он показывает:

127.0.0.1 - - [25/Apr/2011:11:01:27 +0300] [localhost/sid#7b5148][rid#2bc70b0/initial] (1) [perdir N:/Web-dev/www/] pass through N:/Web-dev/www/alice.html

Я попытался проверить, читает ли он файл .htaccess, добавив немного тряпки для переписывания команды движка, и это доказало:

[Mon Apr 25 10:47:04 2011] [alert] [client 127.0.0.1] N:/Web-dev/www/.htaccess: Invalid command 'ReDELETEMEwriteEngine', perhaps misspelled or defined by a module not included in the server configuration

Но создание того же самого для RewriteRule ничего не меняет, как если бы оно игнорировало их. У меня нет выбора, что делать!?

1 Ответ

9 голосов
/ 25 апреля 2011

Проводя больше тестов, я получаю странные результаты - добавляю несколько DELETEME перед командой RewriteEngine - происходит ошибка с ошибкой, если я добавляю что-либо потом, она игнорирует это, как если бы не было ошибок!

ТогдаЯ вспоминаю свой опыт с регулярными выражениями и анализом текста, и мне было интересно, если подделка CRLF принесет какую-то пользу, и обнаружив, что в текущей строке новые символы символов файла, обнаружил, что они там, где CR.Как я знаю, Apache - это программное обеспечение на основе Unix, я подумал, что оно может неправильно их понять, поэтому я преобразовал их в LF, и все, потом все заработало!

Примечание к будущему - обязательно, с вашим редактором (EditPlus, Notepad ++ и т. Д.), Что новые символы строки .htaccess совместимы с несколькими платформами (CRLF) или, по крайней мере, совместимы с Unix (LF), если вы работаете с apache!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...