Итак, я пытаюсь заставить mod_rewrite работать на моем новом сайте. Несколько лет назад я успешно использовал mod_rewrite, но на этот раз ни одна команда после «RewriteEngine On» не работает.
Я получаю точно такой же эффект на моем локальном Apache 2.2, как и на сервере моего веб-хоста, так что это не значит, что сервер не настроен для mod_rewrite. Моя локальная машина работает под управлением Windows, а удаленный сервер - Linux, так что это довольно независимые системы. Вот что я пока проверял для своего локального хоста:
НО. Ничего из того, что я набираю после RewriteEngine On, не имеет никакого эффекта! Я могу написать там чушь и не получить сообщения об ошибке. Я поместил туда множество команд в качестве теста, но даже этот файл .htaccess ничего не делает:
RewriteEngine On
RewriteRule ^.*$ test.html [R]
Это должно переписать каждую страницу, на которую я перехожу, на test.html, не так ли? И все же вообще ничего не происходит - если я перейду к hello.html, я просто получаю веб-страницу, где говорится, что hello.html не найден.
Пожалуйста, может кто-нибудь предложить предложение о том, что попробовать дальше?
Невероятно. После нескольких дней попыток заставить это работать, тот самый файл .htaccess, который я опубликовал, внезапно начинает работать сегодня, как локально, так и на моем удаленном сервере. Что я сделал? Понятия не имею. Я попытался добавить пустую последнюю строку, как советовал другой ответ, и тогда это сработало. Но теперь я избавился от пустой последней строки, она ВСЕ ЕЩЕ работает. Так что я понятия не имею, что случилось. Извините за расплывчатый результат. Для меня это загадка.
Это даже не похоже на то, что перезагрузка моей локальной машины была решением, так как я не перезагружал удаленный сервер, и мой файл .htaccess теперь внезапно начал работать и там. Это единственный файл, который я загрузил перед повторным тестированием, чтобы проверить, работает ли он.
Для файлов конфигурации Linux, включая файлы конфигурации Apache, последняя строка должна быть пустой. Все, что находится после последней новой строки, будет проигнорировано.