Является ли это правильным способом включения htaccess в Apache 2.4.7 на Ubuntu 12.04

37

В почти каждом решении «Как активировать htaccess» они говорят, что файл / etc / apache2 / sites-available / default необходимо отредактировать. Но в Apache 2.4.7 нет такого файла

Я где-то читал, что новый файл по умолчанию - 000-default.conf. Поэтому я отредактировал этот файл и попытался добавить строку:

AllowOverride All

Но Apache2 не перезапустился правильно и дал ошибку. Из документации apache2 я обнаружил, что AllowOverride разрешен только в разделе <Directory> . Затем я попытался добавить это:

<Directory "/var/www">
AllowOverride All
</Directory>

И это, похоже, работает. Но я не уверен, должен ли я поставить / var / www. Это правильный способ сделать это или мой компьютер как-нибудь взорвется?

Спасибо.

    
задан CluelessNoob 05.03.2014 в 15:54
источник

3 ответа

49

TL; др

Да, это правильный путь.
Но чтобы быть более semantic : Да, это правильный способ разрешить .htaccess переопределить все директивы в каталоге /var/www .

Как вы узнали, AllowOverride разрешено только в папке Directory .

Используя ваш пример:

<Directory "/var/www">
    AllowOverride All
</Directory>

Это говорит apache, что все конфигурации могут быть переопределены в /var/www и всех ее подкаталогах (рекурсивно).

Для лучшего примера рассмотрим, что у вас есть следующая конфигурация на вашем виртуальном хосте:

<Directory "/var/www">
    AllowOverride All
</Directory>

<Directory "/var/www/uploads">
    AllowOverride Limit
</Directory>

И следующая структура каталогов:

var/
    www/
        .htaccess
        uploads/
            .htaccess
            a/
                .htaccess
            b/
                .htaccess
        code/
            .htaccess
            c/
                .htaccess
            d/
                .htaccess

Что я здесь сделал, создайте .htaccess в каждом подкаталоге каталога /var/www .
Обычно это не должно быть так, но это просто для ради примера

Сравнение структуры каталогов с конфигурацией означает, что все файлы .htaccess внутри папки /var/www и ее подкаталогов, исключая каталог /var/www/uploads и его подкаталоги, могут переопределять все виды директив .

Но /var/www/uploads и его подкаталоги могут использовать только файл .htaccess , чтобы переопределить директивы Allow , Deny и Order .

Примечание. Начиная с версии apache 2.4 (которая по умолчанию доступна в 13.10+), директивы Allow , Deny и Order были заменены одной директивой с именем Require .     

ответ дан Dan 05.03.2014 в 17:54
источник
31

Сначала включите перезапись, используя следующую команду:

sudo a2enmod rewrite

Затем перезапустите apache2:

sudo service apache2 restart

Затем перейдите в папку sites-available :

/etc/apache2/sites-available

Отредактируйте файл с именем default и измените AllowOverride none на AllowOverride All . Есть две строки, где это изменение должно быть сделано.

Это заставит .htaccess работать на вашем сервере VPS.

Это работало на Ubuntu 12.04.5 VPS.

    
ответ дан q8fft 09.08.2014 в 12:13
1

В моем случае это сработало вот так:
Мне пришлось добавить следующие строки:

Order allow, deny
Allow from all

Итак, это выглядит так:

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Order allow,deny
    allow from all
</Directory>
    
ответ дан Prof. Chagas 26.01.2017 в 21:42