Это правильный способ включить htaccess в Apache 2.4.7

Почти в каждом решении «Как активировать 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. Это правильный способ или мой компьютер как-нибудь взорвется?

46
задан 15 September 2018 в 16:00

4 ответа

tl; доктор

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

<час>

, Поскольку Вы узнали, AllowOverride позволяется только под эти Directory раздел.

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

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

Это говорит апачу, что все конфигурации могут быть переопределены в /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 директивы.

<глоток> Примечание: С апачских 2.4 (Который доступен по умолчанию в 13,10 +) Allow, Deny и Order директивы были заменены единственной директивой, названной Require.

0
ответ дан 15 September 2018 в 16:00

Сначала включите перезапись с помощью этой команды:

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.

0
ответ дан 15 September 2018 в 16:00

В моем случае это работало как это:
я должен был добавить следующие строки:

Order allow, deny
Allow from all

, Таким образом, это похоже на это:

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Order allow,deny
    allow from all
</Directory>
3
ответ дан 15 September 2018 в 16:00
  • 1
    Спасибо! Это действительно работало. Никакая идея, почему это должно, но это сделало:) – j1n3l0 3 September 2015 в 09:42

Здесь отрывок, как включить htaccess в Apache 2.4 без изменения конфигурация по умолчанию:

cat <<EOF> /etc/apache2/conf-available/allow-override.conf
<Directory "/var/www">
    AllowOverride all
</Directory>
EOF

a2enconf allow-override
service apache2 reload
2
ответ дан 22 November 2019 в 23:56

Другие вопросы по тегам:

Похожие вопросы: