- .htaccess не работает apache
- Apache не читает .htaccess
- .htaccess не работает apache
- 10 ответов
- Не работает .htaccess
- 4 ответа 4
- Всё ещё ищете ответ? Посмотрите другие вопросы с метками .htaccess apache или задайте свой вопрос.
- Похожие
- Подписаться на ленту
- Перезапись URL-адресов на Apache в Debian 9
- Требования
- 1: Включение mod_rewrite
- 2: Создание файла .htaccess
- 3: Настройка перезаписи URL-адресов
.htaccess не работает apache
У меня есть сервер из сервиса AWS EC2, работающий в Linux Ubuntu, и я установил apache, php и mysql.
Я добавил .htaccess файл в корень моего документа /var/www/html .
Я ввел этот код в нем: ErrorDocument 404 /var/www/html/404.php и он до сих пор не появляется.
Я продолжал вводить эту команду несколько раз: sudo service httpd restart перезагрузить сервер, но без изменений .
Как я могу это исправить . Я сделал что-то не так?
Во-первых, обратите внимание, что перезапуск httpd не требуется для файлов .htaccess. Файлы .htaccess специально предназначены для людей, у которых нет root — то есть они не имеют доступа к файлу конфигурации сервера httpd и не могут перезапустить сервер. Поскольку вы можете перезапустить сервер, вам не нужны файлы .htaccess, и вы можете напрямую использовать конфигурацию основного сервера.
Во-вторых, если файлы .htaccess игнорируются, вам необходимо проверить, правильно ли установлен AllowOverride. См. Http://httpd.apache.org/docs/2.4/mod/core.html#allowoverride для получения подробной информации. Вы также должны убедиться, что он установлен в правильной области — то есть в правильном блоке в вашей конфигурации. Убедитесь, что вы НЕ редактируете, например, блок.
В-третьих, если вы хотите убедиться, что файл .htaccess действительно читается, поместите в него мусор. Недопустимая строка, такая как «INVALID LINE HERE», в вашем файле .htaccess приведет к ошибке 500 Server, когда вы укажете браузеру на каталог, содержащий этот файл. Если это не так, то у вас не настроен AllowOverride правильно.
Источник
Apache не читает .htaccess
Столкнулся с тем, что Apache читает файл .htaccess , который я создал для своего сайта, но совершенно его не воспринимает. Длительное чтение статей выявило, что недостаточно полно был настроен файл конфигурации Apache httpd.conf . В этой статье я расскажу, что было сделано не так, и что нужно сделать. Все операции требуют привилегий root.
Содержимое файла .htaccess :
Эти директивы должны были бы перенаправлять все запросы к сайту с любой страницы на index.php , однако на самом деле этого не происходило и я получал сообщение Error 404: Page not found . Отходить от шаблона проектирования Front Controller я не собирался, поэтому начал читать.
В большинстве статей написано, что нужно раскомментировать следующие строки в httpd.conf :
В CentOS 6 эта строка раскомментирована по умолчанию, и нужная библиотека также присутствует в каталоге файлов Apache. В Deb-дистрибутивах этот мод по умолчанию выключен, включается командой:
Дальше нужно проверить, что в httpd.conf раскомментированы следующие строки:
Однако и этого недостаточно. По-умолчанию в качестве DocumentRoot для Apache указана папка /var/www/html . Соответствующие правила ее обработки описаны в httpd.conf следующими строками (комментарии удалены):
Я выкладываю сайты на свой сервер в папку /var/www , т. е. по факту у меня DocumentRoot’ом будет выступать именно она, а не /var/www/html . Это дело привычки, просто потом при заполнении файлов конфигурации виртуальных хостов писать текста немного меньше.
Источник
.htaccess не работает apache
У меня есть сервер из службы AWS EC2, работающий на Linux ubuntu, и я установил apache, php и mysql.
Я добавил файл .htaccess в свой файл root /var/www/html .
Я ввел в него этот код: ErrorDocument 404/var/www/html/404.php и он по-прежнему не отображается.
Я продолжал вводить эту команду несколько раз: sudo service httpd restart для перезапуска сервера, но никаких изменений не отображалось.
Как я могу исправить это. Я сделал что-то не так?
10 ответов
Во-первых, обратите внимание, что перезапуск httpd не требуется для файлов .htaccess. Файлы .htaccess предназначены специально для людей, у которых нет корневого каталога, т.е. не имеют доступа к конфигурационному файлу сервера httpd и не могут перезапустить сервер. Поскольку вы можете перезагрузить сервер, вам не нужны файлы .htaccess и можете напрямую использовать конфигурацию основного сервера.
Во-вторых, если файлы .htaccess игнорируются, вам нужно проверить, правильно ли установлено AllowOverride. Подробнее см. http://httpd.apache.org/docs/2.4/mod/core.html#allowoverride. Вы также должны убедиться, что он установлен в правильной области — то есть в правом блоке в вашей конфигурации. Убедитесь, что вы НЕ редактируете файл в блоке, например.
В-третьих, если вы хотите убедиться, что файл .htaccess на самом деле читается, поместите в него мусор. Недопустимая строка, например «INVALID LINE HERE», в вашем файле .htaccess приведет к ошибке 500 Server, когда вы укажете свой браузер в каталоге, содержащем этот файл. Если это не так, значит, у вас нет правильно настроенного AllowOverride.
Источник
Не работает .htaccess
Не работает переадресация всех запросов на index.php и выдает ошибку, как я понял, то проблема в том, что апач не учитывает настройки моего файла .htaccess.
Вот настройки апача из файла настройек httpd.conf
Вот содержимое htaccess
Подскажите, в чем проблема?
4 ответа 4
Первым делом нужно проверить обрабатывается ли htaccess. Для этого нужно сохранить его с любым текстом не имеющим смысла. Если получите 500-ю ошибку, то файл обрабатывается.
Далее нужно проверить заголовки сервера, например с помощью https://bertal.ru/ или инструментов разработчика Google Chrome — вкладка Network. Вполне возможно (на хостингах), что в заголовках ответа в качестве сервера вы увидите не Apache, а nginx. Тогда нужно смотреть как настроен nginx. Как правило он может искать запрашиваемые ссылки физически в файловой системе.
В вашей настройке не указано как будет называться AccessFile, нужно добавить «AccessFileName .htaccess» в конфиге apache.
У меня тоже была такая проблема. Но я решил. Нашёл два способа:
- Это решается со стороны хоcтинга. Если они не хотят или не могут, то нужно менять хостинг.
Перед названием контроллера добавить index.php . Например:
Ещё, на всякий случай вот тут содержимое моего файла .htaccess:
Всё ещё ищете ответ? Посмотрите другие вопросы с метками .htaccess apache или задайте свой вопрос.
Похожие
Подписаться на ленту
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
дизайн сайта / логотип © 2021 Stack Exchange Inc; материалы пользователей предоставляются на условиях лицензии cc by-sa. rev 2021.10.15.40479
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Источник
Перезапись URL-адресов на Apache в Debian 9
Модуль mod_rewrite от Apache позволяет конвертировать URL-адреса. Он также позволяет переписывать URL-адреса согласно условиям.
Файл .htaccess позволяет создавать и применять правила перезаписи без необходимости менять конфигурации сервера. Поместив файл .htaccess в корневой каталог веб-сайта, вы можете управлять перезаписью адресов для каждого сайта или каталога.
Этот мануал поможет вам включить модуль mod_rewrite и использовать файлы .htaccess для настройки базовых редиректов.
Требования
- Сервер Debian 9, полностью настроенный по этому мануалу.
- Установленный веб-сервер Apache (смотрите разделы 1 и 2 руководства Установка веб-сервера Apache в Debian 9)
1: Включение mod_rewrite
Чтобы Apache понимал правила перезаписи, сначала нужно активировать mod_rewrite. Он уже установлен, но отключен в установке Apache по умолчанию. Используйте команду a2enmod для включения модуля:
sudo a2enmod rewrite
Эта команда включит модуль. Если модуль был включен ранее, она сообщит вам об этом. Чтобы обновить настройки веб-сервера, перезапустите его:
sudo systemctl restart apache2
Итак, модуль mod_rewrite включен. Теперь нужно подготовить файл .htaccess, в котором будут храниться правила перезаписи и редиректа.
2: Создание файла .htaccess
Файл .htaccess позволяет настраивать редирект вне конфигурационного файла сервера. По этой причине файл .htaccess может подвергнуть риску безопасность веб-приложения. Точка в начале имени файла значит, что это скрытый файл.
Примечание: Все правила, хранящиеся в .htaccess, будут работать и в конфигурационных файлах сервера. Документация Apache рекомендует использовать обычные конфигурационные файлы вместо .htaccess, поскольку они быстрее обрабатываются веб-сервером.
Однако в этом простом примере увеличение производительности не является главной целью. Кроме того, хранить правила в .htaccess очень удобно, особенно если один сервер обслуживает сразу несколько сайтов. Этот файл не требует перезагрузки сервера, чтобы изменения вступили в силу, а для его редактирования не нужны привилегии суперпользователя, что упрощает техническое обслуживание и внесение изменений в настройки. Некоторые популярные программы с открытым исходным кодом (например, WordPress и Joomla) часто используют файл .htaccess.
Прежде чем приступить к настройке .htaccess, нужно добавить несколько параметров в настройки сервера.
По умолчанию Apache не поддерживает .htaccess. Чтобы изменить это, откройте конфигурационный файл Apache в текстовом редакторе (например, в nano).
sudo nano /etc/apache2/sites-available/000-default.conf
Найдите блок . Добавьте в него следующие строки:
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
. . .
Сохраните и закройте файл. Проверьте ошибки в файле:
sudo apache2ctl configtest
Если ошибок нет, перезапустите Apache:
sudo systemctl restart apache2
Теперь создайте .htaccess в корневом каталоге веб-сервера.
sudo nano /var/www/html/.htaccess
Добавьте следующую строку в начало файла, чтобы включить механизм перезаписи:
Сохраните и закройте файл.
В дальнейшем вы сможете использовать файл .htaccess для хранения правил маршрутизации приложения.
3: Настройка перезаписи URL-адресов
Теперь можно создать базовые правила перезаписи URL-адресов, которые будут преобразовывать чистые ссылки в реальные пути к страницам. Рассмотрим настройку на примере ссылки:
Для начала создайте страницу about.html в корневом каталоге веб-сервера:
sudo nano /var/www/html/about.html
Скопируйте и вставьте в файл такой HTML-код:
Источник