.htaccess не работает apache
у меня есть сервер от сервиса AWS EC2, работающего на Linux ubuntu, и я установил apache, php и mysql.
Я добавил .htaccess
файл в моем корне документа /var/www/html
.
Я ввел в него этот код:
ErrorDocument 404 /var/www/html/404.php
и он все еще не появляется.
Я продолжал вводить эту команду несколько раз:sudo service httpd restart
перезагрузить сервер, но никаких изменений не отображается...
как я могу исправить это... Я сделала что-то не так?
спасибо вперед!
10 ответов
во-первых, обратите внимание, что перезапуск httpd не требуется .htaccess файлы. .файлы htaccess предназначены специально для людей, которые не имеют root - ie, не имеют доступа к файлу конфигурации сервера httpd и не могут перезапустить сервер. Поскольку вы можете перезапустить сервер, вам это не нужно .htaccess файлы и может использовать конфигурацию главного сервера напрямую.
во-вторых, если .файлы htaccess игнорируются, вам нужно проверить, правильно ли установлен AllowOverride. Видеть http://httpd.apache.org/docs/2.4/mod/core.html#allowoverride для сведения. Вы также должны убедиться, что он установлен в правильной области - т. е. в правом блоке в вашей конфигурации. Будьте уверены, что вы не редактирование в блоке, например.
в-третьих, если вы хотите убедиться, что .htaccess файл на самом деле читается, положить мусор в нем. Недопустимая строка, например "недопустимая строка здесь", в вашем .файл htaccess, приведет к ошибке сервера 500, когда вы указываете браузеру на каталог, содержащий этот файл. Если это не так, то у вас нет AllowOverride настроен правильно.
-
включить модуль Apache mod_rewrite
a2enmod rewrite
-
добавить следующий код
/etc/apache2/sites-available/default
AllowOverride All
-
перезапустить apache
/etc/init.d/apache2 restart
если вы пробовали все вышеперечисленное, которые все действительны и хорошие ответы, и ваш файл htaccess не работает или не читается, измените директиву в . В 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
на 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 / apache2
попробуйте настроить его на AllowOverride All
просто выполните 3 шага
-
включить mode_rewrite, используя следующую команду
sudo a2enmod переписать
будет задан пароль. Так что введите свой пароль
-
обновить 000-по умолчанию.conf или по умолчанию.conf файл находится по адресу / etc / apache2 / сайты-доступно/. вы не можете редактировать его напрямую. поэтому используйте следующую команду для открыть
sudo gedit/etc/apache2/sites-available / 000-по умолчанию.conf
или sudo gedit / etc/apache2/sites-доступно / по умолчанию.conf
вы получаете
DocumentRoot так в /var/www в/в HTML
или
DocumentRoot так в /var/ВСП
линии. Добавьте следующий код после него.
<Directory /var/www/html/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
Make user путь тега каталога такой же, как показано в вашем файл.
-
перезагрузите сервер apache, используя следующую команду
перезапуск службы sudo apache2
по моему опыту, директива/var/ www / directory предотвращает директивы вложенной папки virtualhost. Поэтому, если вы пробовали все предложения и все еще не работаете, и вы используете virtualhosts, попробуйте это;
1-Убедитесь, что у вас есть
AllowOverride All
директива in
/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
или просто убежать линия
на WampServer
открыть значок в трее WampServer - - - - > Apache - - - > модули Apache - - - >rewrite_module
по умолчанию Apache запрещает использование an .файл htaccess для применения правил перезаписи, поэтому
Шаг 1-Включение mod_rewrite (если не включено) Во-первых, нам нужно активировать mod_rewrite. Он доступен, но не включен с чистой установкой Apache 2.
$ sudo a2enmod rewrite
это активирует модуль или предупредит вас, что модуль уже включен. Чтобы эти изменения вступили в силу, перезапустите Apache.
$ sudo systemctl restart apache2
и mod_rewrite теперь полностью включен. В следующий шаг мы установим .htaccess файл, который мы будем использовать для определения правил для перенаправления.
Шаг 2 - Настройка .реврайт Откройте файл конфигурации Apache по умолчанию с помощью nano или любимого текстового редактора.
$ sudo nano /etc/apache2/sites-available/000-default.conf
внутри этого файла вы найдете блок, начинающийся с первой строки. Внутри этого блока добавьте следующий новый блок, чтобы ваш файл конфигурации выглядел следующим образом. Убедитесь, что все блоки правильно изрезанный.
/ etc/apache2/sites-available / 000-по умолчанию.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