Я пытаюсь использовать mod_rewrite через файлы .htaccess, и у меня большая проблема, файлы .htaccess не читаются. Машина работает под управлением Debian 5.0 и использует стабильный пакет apache2.
Я выполнил инструкции с этой страницы: http://www.debian-administration.org/articles/136. Включил mod_rewrite вот так:
a2enmod rewrite
В моем файле /etc/apache2/apache2.conf я добавил следующее:
<Directory "/var/www">
AllowOverride ALL
Options FollowSymLinks
</Directory>
В корневом каталоге я создал файл .htaccess с таким содержимым:
RewriteEngine on
RewriteRule ^test$ foo.html
Я пробовал много предложений из ответов на похожие вопросы, но безрезультатно. При посещении foo.com/test я получаю сообщение об ошибке: страница 404 не найдена. Все файлы доступны для чтения всем. При прямом доступе к foo.html проблем нет. Я также попытался поместить мусор в другой .htaccess, чтобы увидеть, будет ли apache жаловаться на это, ничего не изменилось. Может я просто слишком устал!
Спасибо
Если вы не получаете ошибку 500 при доступе к каталогу с файлом .htaccess с мусором в нем, значит, Apache не читает ваш файл .htaccess.
У вас есть сайт, определенный в файле / etc / apache2 / sites-available / default (или другом файле, который используется для вашего виртуального хоста), который перезаписывает определение AllowOverride All для этого каталога?
У меня была проблема с моим сервером apache, который тоже не читал htaccess, и, как выяснилось, я не установил:
<Directory "YOUR_DIRECTORY">
AllowOverride ALL
</Directory>
для моего каталога в httpd.conf. Но как только я это сделал и перезапустил apache с
apachetcl -k restart
htaccess работал нормально.
Проверьте файл ошибок /var/log/apache2/error.log, когда вы попытаетесь вызвать "тестовую" проверку, соответствует ли каталог правильному каталогу.