У меня есть сервер из службы AWS EC2, работающий на Linux ubuntu, и я установил apache, php и mysql.
Я добавил файл .htaccess
в свой файл root /var/www/html
.
Я ввел в него этот код: ErrorDocument 404/var/www/html/404.php
и он по-прежнему не отображается.
Я продолжал вводить эту команду несколько раз: sudo service httpd restart
для перезапуска сервера, но никаких изменений не отображалось...
Как я могу исправить это... Я сделал что-то не так?
Заранее спасибо!
Во-первых, обратите внимание, что перезапуск 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.
Включить модуль mod_rewrite Apache
a2enmod rewrite
добавьте следующий код в /etc/apache2/sites-available/default
AllowOverride All
Перезапустить apache
/etc/init.d/apache2 restart
Если вы пробовали все вышеперечисленные, которые являются действительными и хорошими ответами, а ваш файл 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
AllowOverride FileInfo
требуется для чтения и использования файла .htaccess
. All
также включает дополнительные переопределения конфигурации, такие как .httpasswd
(который можно включить отдельно, используя Authconfig
вместо All
).
Для 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
Скорее всего, AllowOverride установлен на None. в разделе каталога apache2.conf, расположенном в папке /etc/apache 2
Попробуйте настроить его на AllowOverride All
Просто выполните 3 шага
Включить mode_rewrite, используя следующую команду
sudo a2enmod rewrite
Будет запрошен пароль. Введите пароль
Обновите файл 000-default.conf или default.conf, расположенный по адресу /etc/apache2/sites-available/ каталог. вы не можете редактировать его напрямую. поэтому используйте следующую команду для открытия
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>
Сделайте путь к тегу каталога таким же, как показано в вашем файле.
Перезагрузите сервер Apache, используя следующую команду
sudo service apache2 restart
По моему опыту, директива /var/www/directory запрещает директивы virtualhost в папке. Поэтому, если вы пробовали все предложения и все еще не работали, и вы используете virtualhosts, попробуйте это;
1 - Убедитесь, что у вас есть директива AllowOverride All
в /etc/apache2/sites-available/example.com.conf
2 - Проверить/var/www/Директивы /etc/apache2/apache2.conf
в /etc/apache2/apache2.conf
(возможно, на строке 164), которая выглядит;
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
Если есть директива AllowOverride None
измените ее на AllowOverride All
или просто на AllowOverride All
escape
В WampServer
Открыть значок WampServer Tray ---- > Apache --- > Модули Apache --- > rewrite_module
используйте RewriteBase/{вашу папку}/на вашем .htaccess
По умолчанию 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
400 Bad Request
с/var/www/html/404.php
?