Як увімкнути використання .htaccess в Apache на Ubuntu?


15

Я намагаюся ввімкнути використання файлу htaccess в Ubuntu 14.04 (Apache 2.4.7). Я знаю, що це питання має багато можливих дублікатів, але жоден з них мені ще не допоміг.

.htaccess

ErrorDocument 404 /404.html

000-default.conf

<VirtualHost *:80>
AccessFileName .htaccess

ServerAdmin webmaster@localhost
DocumentRoot /var/www

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

<Directory /var/www/>
  Options Indexes FollowSymLinks Includes
  AllowOverride All
  Order allow,deny
  Allow from all
</Directory>
</VirtualHost>

Що ще потрібно?


1
Директива AllowOverride All дозволяє усі параметри у файлі .htaccess. 000-default.conf передбачає, що на вашому сервері є лише один сайт. Файл .htaccess не працює для вас? На цьому сервері розміщено більше одного сайту?
closetnoc

У / var / www існує багато папок, але віртуальних хостів не створюється. / і т.д. / apache2 / доступні сайти / папка містить два файли, 000-default.conf та default-ssl.conf. Файл htaccess знаходиться в / var / www /
David ZIP,

Можливо, "DocumentRoot / var / www /"? (косою косою рисою)
Кова

Переконайтесь, що / etc / apache2 / включено сайти / містить посилання на 000-default.conf. Якщо ви зміните файл /var/www/index.html, ви побачите зміни, переглядаючи сервер за допомогою веб-браузера, правда?
Стівен Остерміллер

Відповіді:


26

Перший крок

Відкрити файл як

sudo vim /etc/apache2/apache2.conf

Другий крок

видалити знак коментаря (#), якщо ви знайдете його перед цим рядком (номер рядка 187 прибл.)

AccessFileName .htaccess

Третій крок

Потім знайдіть рядок, де є

<Directory /var/www/>
     Options Indexes FollowSymLinks
     AllowOverride None
     Require all granted
</Directory>

замініть "Немає" на "Усі"

AllowOverride All

І вуаля ... .htaccessпрацює !!


3
зміни не набрали чинності, поки я не перезапустив apache Команда: перезапуск служби apache
Тахір Ясін

1
Я пропоную, як зазначає @TahirYasin, перезапустити апаш. sudo service apache2 restart.
www139


1

У моєму випадку зміни AllowOverride Noneдо AllowOverride Allв /etc/apache2/sites-enabled/000-default.conf допоміг.

Усі інші .conf файли вже були AllowOverride All.


0
  1. У /etc/apache2/apache2.conf видалити знак коментаря ( #) зAccessFileName .htaccess
  2. Ім'я файлу конфігурації Apache не є стандартним. Ви можете перейменувати його на default.conf у Windows та перейменувати його за замовчуванням у Linux. У ОС на базі Linux запустіть цей код у терміналі:

    sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/default
    

Він названий нулями, так що він спочатку буває алфавітним. Якщо у вас є файл default.conf, а потім створити сайт для anteater.com, то anteater стає хостом за замовчуванням, оскільки він завантажується спочатку. Зберігайте 000, щоб запобігти подібним проблемам. Ім'я конф-файлу не повинно мати нічого спільного з тим, чи працює .htaccess чи ні.
Стівен Остерміллер

1
'AccessFileName .htaccess' вже коментований. Вище відповідь мені допомогла. Спасибі.
David ZIP
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.