Почти в каждом решении «Как активировать 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. Это правильный способ или мой компьютер как-нибудь взорвется?
Да это - корректный путь.
, Но быть больше семантический : Да, это - корректный способ позволить .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
. глоток>
Сначала включите перезапись с помощью этой команды:
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.
В моем случае это работало как это:
я должен был добавить следующие строки:
Order allow, deny
Allow from all
, Таким образом, это похоже на это:
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
allow from all
</Directory>
Здесь отрывок, как включить 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