.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 настроен правильно.


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

    a2enmod rewrite

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

    AllowOverride All

  3. перезапустить 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 шага

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

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

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

  1. обновить 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 путь тега каталога такой же, как показано в вашем файл.

  1. перезагрузите сервер 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


используйте RewriteBase / {your folder} / на вашем .реврайт


по умолчанию 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