Debian htaccess не работает

.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-код:

Источник

Оцените статью