.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 107

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 все

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

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

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

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

  1. обновить 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>

сделать пользователя путь к тегу каталога таким же, как показано в вашем файл.

  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 или просто убежать линия

In WampServer открыть значок в трее WampServer - - - - > Apache - - - > модули Apache - - - >rewrite_module

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

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