.htaccess не работает apache

У меня есть сервер из сервиса AWS EC2, работающий в Linux Ubuntu, и я установил apache, php и mysql.

Я добавил .htaccess файл в корне моего документа /var/www/html,

Я ввел этот код в нем:
ErrorDocument 404 /var/www/html/404.php и это все еще не обнаруживается.

Я продолжал вводить эту команду несколько раз: sudo service httpd restart перезагрузить сервер, но не отображаются изменения …

Как я могу это исправить … Я сделал что-то не так?

Заранее спасибо!

115

Решение

Во-первых, обратите внимание, что перезапуск 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 правильно.

247

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

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

    a2enmod rewrite

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

    AllowOverride All

  3. Перезапустите Apache

    /etc/init.d/apache2 restart

99

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

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

<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>

У меня была такая же проблема, и я нашел ответ и объяснение в Ubuntu Ask! Форум https://askubuntu.com/questions/421233/enabling-htaccess-file-to-rewrite-path-not-working

35

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

sudo a2enmod rewrite

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

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

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

<Directory "/var/www/html">
AllowOverride All
</Directory>

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

18

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

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

5

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

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

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

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

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

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

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

ты получишь

DocumentRoot / var / www / html

ИЛИ ЖЕ

DocumentRoot / var / www

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

<Directory /var/www/html/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>

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

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

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

5

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

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

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

<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>

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

4

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

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

$ sudo a2enmod rewrite

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

$ sudo systemctl restart apache2

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

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

$ sudo nano /etc/apache2/sites-available/000-default.conf

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

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

<VirtualHost *:80>
<Directory /var/www/html>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>

. . .
</VirtualHost>

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

$ sudo systemctl restart apache2

Готово. Ваш .htacess должен работать.
Эта ссылка может действительно помочь кому-то https://www.digitalocean.com/community/tutorials/how-to-rewrite-urls-with-mod_rewrite-for-apache-on-ubuntu-16-04

2
По вопросам рекламы [email protected]