.htaccess не работает apache
у меня есть сервер от AWS EC2 service, работающий на 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 все
просто выполните 3 шага
включить mode_rewrite с помощью следующей команды
sudo a2enmod переписать
будет задан пароль. Так что введите свой пароль
обновить 000-по умолчанию.conf или по умолчанию.conf файл находится по адресу / etc / apache2 / sites-available/. вы не можете редактировать его напрямую. поэтому используйте следующую команду, чтобы открой
sudo gedit/etc/apache2/sites-available / 000-default.conf
или sudo gedit/etc/apache2/sites-доступно / по умолчанию.conf
вы получаете
DocumentRoot/var/www / html
или
DocumentRoot/var / www
линии. Добавьте следующий код после него.
<Directory /var/www/html/> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory>
сделать пользователя путь к тегу каталога таким же, как показано в вашем файл.
перезапустите сервер 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
или просто убежать линия
In
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 - Настройка .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