apache не видит htaccess

Вы создали в директории с сайтом файл .htaccess, но чтобы вы туда не писали, ни одна директива не работает. Почему?

Скорее всего здесь виновата опция AllowOverride в apache.

Куда же ее вставлять?

Заходим в конфигурационный файл Apache — httpd.conf. В FreeBSD он располагается здесь:

В других системах расположение другое. Но в целом не так трудно его найти:)

Находим такой блок … , если нет то создаем его:

AllowOverride All
Order allow,deny
Allow from all

Если есть, то добавляем либо меняем опцию AllowOverride:

/usr/local/www/apache22/data/site.ru — это абсолютный путь до вашей директории, где лежит файл .htaccess

AllowOverride All — здесь сказано что если существует файл .htaccess, то все (All) директивы прописанные в нем выполнять. Кстати если не хотите чтоб сервер читал файл .htaccess то замените «All» на «None».

Allow from all — доступ к папке имеют все.

После того как добавили блок с описанием вашей директории перезапускаем apache.

Теперь все директивы в файле .htaccess должны отрабатывать.

У меня есть сервер из сервиса 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 игнорируются, вам необходимо проверить, правильно ли установлен AllowOverr > для деталей. Вам также необходимо убедиться, что он установлен в правильной области — то есть в правильном блоке в вашей конфигурации. Будь уверен НЕ редактирование одного в блоке, например.

В-третьих, если вы хотите убедиться, что файл .htaccess действительно читается, поместите в него мусор.
Недопустимая строка, такая как «INVALID LINE HERE», в вашем файле .htaccess приведет к ошибке 500 Server, когда вы укажете браузеру на каталог, содержащий этот файл. Если это не так, то у вас не настроен AllowOverride правильно.

Другие решения

Включить модуль Apache mod_rewrite

добавьте следующий код в /etc/apache2/sites-available/default

Если вы перепробовали все вышеперечисленное, которые являются действительными и хорошими ответами, и ваш файл htaccess не работает или читается, измените директиву в apache2.conf файл. Под Ubuntu путь /etc/apache2/apache2.conf

Изменить директива, указывающая на ваши общедоступные веб-страницы, где находится файл htaccess. Меняться от AllowOverride None в AllowOverride All

За Ubuntu,
Сначала запустите эту команду:

Затем отредактируйте файл /etc/apache2/sites-available/000-default.conf используя nano или vim с помощью этой команды: —

Тогда в 000-default.conf файл, добавьте это после строки DocumentRoot /var/www/html , Если ваш корневой каталог html — это что-то другое, то напишите:

Сделав все, перезапустите apache с помощью команды sudo service apache2 restart

Скорее всего, для AllowOverride установлено значение None. в разделе каталога apache2.conf, расположенном в папке / etc / apache2

Попробуйте установить для него AllowOverride All

Просто выполните 3 шага

Включите mode_rewrite, используя следующую команду

sudo a2enmod переписать

Пароль будет запрошен. Так что введите свой пароль

Обновите свой 000-default.conf или же default.conf файл находится в / и т.д. / apache2 / сайты-доступны / каталог. Вы не можете редактировать его напрямую. поэтому используйте следующую команду, чтобы открыть

sudo gedit /etc/apache2/sites-available/000-default.conf

Или же
sudo gedit /etc/apache2/sites-available/default.conf

линия. Добавьте следующий код после него.

Сделайте так, чтобы путь тега каталога был таким же, как показано в вашем файле.

Перезагрузите сервер apache, используя следующую команду

перезапуск службы sudo apache2

По моему опыту, директива / var / www / directory запрещает директивы virtualhost. Так что, если вы перепробовали все предложения и все еще не работали, и вы используете виртуальные хосты, попробуйте это;

1 — убедитесь, что у вас есть
AllowOverride All директива в
/etc/apache2/sites-available/example.com.conf

2 — Проверьте / var / www / Директивы директивы в /etc/apache2/apache2.conf (возможно, в строке 164), которая выглядит так;

Если есть AllowOverride None директива изменить его на
AllowOverride All или просто сбежать

По умолчанию Apache запрещает использование файла .htaccess для применения правил перезаписи, поэтому

Шаг 1 — Включение mod_rewrite (если не включено)
Во-первых, нам нужно активировать mod_rewrite. Он доступен, но не включен с чистой установкой Apache 2.

Это активирует модуль или предупредит вас, что модуль уже включен. Чтобы эти изменения вступили в силу, перезапустите Apache.

mod_rewrite теперь полностью включен. На следующем шаге мы настроим файл .htaccess, который будем использовать для определения правил перезаписи для перенаправлений.

Шаг 2 — Настройка .htaccess
Откройте файл конфигурации Apache по умолчанию, используя nano или ваш любимый текстовый редактор.

Внутри этого файла вы найдете блок, начинающийся с первой строки. Внутри этого блока добавьте следующий новый блок, чтобы ваш файл конфигурации выглядел следующим образом. Убедитесь, что все блоки имеют правильные отступы.

Сохраните и закройте файл. Чтобы эти изменения вступили в силу, перезапустите Apache.

Проблема распрастраненая, сначало облазил кучу мануалов и пробывал разные варианты, в итоге не зашло. Вот теперь пишу. Только вникаю в linux. поставил апач2 туда засунул mod_rewrite, создал виртуальный хост ( закинул туда проектик на yii2 с openservera )

в настройках апача , а именно тут /etc/apache2/apache2.conf прописано следующее : AccessFileName .htaccess

виртуальный хост загружается — с этим проблем нет , а вот файл .htaccess не видит в упор. Отмечу — что в синтаксисе самого проекта ошибок нет, т.к взят рабочий проект с win OpenServer.

и дополнительный вопрос apache и apache2 , различие в версиях?

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