Як встановити AllowOverride all


161

Я хочу встановити " AllowOverride allАле я не знаю, як це зробити". Я знайшов наступний код шляхом пошуку в Google і вставив його .htaccess:

<Directory>
        AllowOverride All
</Directory>

Але після вклеювання я почав отримувати "Internal Server Error"

Хтось може мене направити, куди цей код або як це зробити?


3
<Directory>Директива вимагає шляху аргументу.
FKEinternet

Відповіді:


317

Якщо ви перебуваєте на Ubuntu, відредагуйте файл /etc/apache2/apache2.conf(тут ми маємо приклад /var/www):

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

і змінити його на;

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

тоді,

sudo service apache2 restart

Можливо, вам також потрібно зробити, sudo a2enmod rewriteщоб увімкнути перезапис модуля.


55
Мені теж потрібно було користуватися sudo a2enmod rewrite, тоді це спрацювало. На Ubuntu 14.04 LTS. Сподіваюся, комусь це буде корисно.
Йонауз

2
Дивно ... коли я роблю це, я отримую внутрішню помилку сервера. Чи вказує це на помилку у файлі .htaccess, який знаходиться за адресою /var/www/.htaccess? Повернувши apache2, поверніться до AllowOverride None не виправляє помилку, але не дозволяє переписувати URL.
o_O

В Ubuntu 12.04. Я знайшов цей файл за адресою / etc / apache2 / доступні сайти / шлях за замовчуванням
عثمان غني

Як я можу змінити це з окремого файлу? Я бачу, що IncludeOptional conf-enabled/*.confв останньому рядку мого apache2.confфайлу є Але, схоже, apache2.confнатомість пріоритет.
JohnnyQ

Це робить для мене чари. Після оновлення сервера debian моєї компанії з wheezy до jessie все в апачі перестало працювати, і після додавання цього все почало працювати знову.
periket2000

51

Основна мета AllowOverrideполягає в тому, щоб менеджер основних файлів конфігурації apache (той, який знайдено в / etc / apache2 / головним чином) вирішив, яку частину конфігурації можна динамічно змінювати за допомогою додатків на основі шляху.

Якщо ви не адміністратор сервера, ви залежите від рівня AllowOverride, який дозволяє цим адміністраторам. Так що вони можуть завадити вам змінити деякі важливі параметри безпеки;

Якщо ви головний менеджер конфігурації apache, ви завжди повинні використовувати AllowOverride Noneта передавати всі знайдені вами приклади google_based на основі .htaccess файлів до Directoryрозділів основних файлів конфігурації. Оскільки вміст .htaccess для .htaccessфайлу у файлі /my/path/to/a/directory- це те саме, що й <Directory /my/path/to/a/directory>інструкція, за винятком того, що .htaccessзміна конфігурації запитів на HTTP-запит чимось уповільнює ваш веб-сервер. Завжди віддайте перевагу статичній конфігурації без .htaccessперевірок (і ви також уникнете атак безпеки шляхом .htaccessзмін).

До речі, у вашому прикладі, який ви використовуєте, <Directory>і це завжди буде неправильно, інструкції до каталогу завжди містять шлях, як-от <Directory />або <Directory C:>або <Directory /my/path/to/a/directory>. І звичайно, це не може бути поміщено у .htaccessяк - .htaccessце як інструкція з каталогу, але у файл, присутній у цьому каталозі. Звичайно , ви не можете змінити AllowOverrideв .htaccessякості цієї інструкції управління рівнем безпеки в .htaccessфайлах.


17

Goto your_severpath/apache_ver/conf/ Відкрийте файл httpd.confв блокноті.

Знайдіть цей рядок:

#LoadModule vhost_alias_module модулі / mod_vhost_alias.so

Видаліть хеш-символ:

LoadModule vhost_alias_module модулі / mod_vhost_alias.so

Тоді йти <Directory />

і змінити на:

<Directory />
    Options FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

Потім перезавантажте локальний сервер.


Робота виконана! Тай сер!
Джеймс Уокер

6
NB Order allow,denyі Allow from allпризначені для Apache 2.2 і вище. У програмі Apache 2.4 ці два рядки замінюються такими, Require all grantedяк показано в інших відповідях.
FKEinternet

13

В Linux, щоб послабити доступ до кореня документа, слід відредагувати такий файл:

/etc/httpd/conf/httpd.conf

І залежно від того, на якому рівні каталогу ви хочете розслабити доступ, вам доведеться змінити директиву

AllowOverride None

до

AllowOverride All

Отже, якщо ви хочете дозволити доступ до файлів у каталозі / var / www / html, вам слід змінити наступні рядки з:

<Directory "/var/www/html">
 AllowOverride None
</Directory>

до

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

8
та перезапустіть сервер після
Даніель

Після сто разів двічі перевірки моїх .htacces - це було рішення! Велике спасибі. Я подумав, що "все" - це значення за замовчуванням конфігурації apache.
Маттіас Кляйн

Також згадувати Linux у своїй відповіді - це не добре. Незважаючи на те, що це старе, я просто хочу уточнити, що те, що ви говорите, - це дистрибуція, заснована на Redhat
Chi.CJRajeeva Lochana

11

Якщо ви використовуєте Linux, ви можете редагувати код у каталозі

/etc/httpd/conf/httpd.conf

Тепер, тут знайдіть такий собі кодовий рядок

# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#   Options FileInfo AuthConfig Limit
#
    AllowOverride None
#
# Controls who can get stuff from this server.
#
    Order allow,deny
    Allow from all

</Directory>

Змініть AllowOveride None на AllowOveride All

Тепер ви можете встановити будь-яке правило у вашому .httacess-файлі всередині ваших каталогів, якщо будь-яка інша операційна система просто спробує знайти файл httpd.conf і відредагувати його.


Станом на 2015Nov18 1539 PST, коли я шукаю в Google "дозволити", я бачу поле над результатами пошуку, яке показує це:now here fine the code line kinda like # AllowOverride controls what directives may be placed in .htaccess files. # It can be "All", "None", or any combination of the keywords: # Options FileInfo AuthConfig Limit # AllowOverride None # # Controls who can get stuff from this server. #Sep 11, 2013 apache - How to Set AllowOverride all - Stack Overflow stackoverflow.com/questions/18740419/how-to-set-allowoverride-all
boot13

6

Я думаю, ви хочете встановити його у своєму httpd.confфайлі, а не у .htaccessфайлі.

Я не впевнений, яку ОС ви використовуєте, але це посилання на Ubuntu може дати вам деякі вказівки щодо того, що робити.

https://help.ubuntu.com/community/EnablingUseOfApacheHtaccessFiles


5

Як пояснили інші користувачі, тут використовується директива дозволу, яка використовується для надання дозволу на використання .htaccess. одне, що я хочу зазначити, що ніколи не використовуйте дозвіл на обробку всіх, якщо інші користувачі мають доступ для запису .htaccess, а не використовувати дозвільний для дозволу певні модулі.

Такі як AllowOverride AuthConfig mod_rewriteЗамість

AllowOverride All

Оскільки такий модуль, як mod_mime, може відображати файли на сервері як звичайний текст.


1
СПАСИБІ!! Це саме те, що я шукав. Я хочу перенаправити windwalker.com.au на windwanderer.com.au, і тому мені потрібно було дозволити цю директиву у файлі .htaccess і НІЧОГО БІЛЬШЕ. Завжди розміщуючи AllowOverride ВСЕ значне, ви знижуєте безпеку моїх серверів.
Jesse the Wind Wanderer

1

Я також зустрічаюся з цією проблемою, і я знайшов рішення як 2 крок нижче: 1. У папці з включеною веб-сайтами apache2 ви редагуєте елемент Directory, встановивши "AllowOverride all" (має бути "all", а не "none") 2. У проекті kohana у папці www перейменуйте "example.htaccess" на ".htaccess"

Я робив це на ubuntu. Сподіваємось, що це вам допоможе.


0

SuSE Linux Enterprise Server

Переконайтесь, що ви редагуєте правильний файл https://www.suse.com/documentation/sles11/book_sle_admin/data/sec_apache2_configuration.html

httpd.conf

Основний файл конфігураційного сервера Apache. Уникайте змін цього файлу. Він насамперед містить оператори, що включають, та глобальні налаштування. Перезапишіть глобальні налаштування у відповідних файлах конфігурації, перелічених тут. Змініть налаштування для хоста (наприклад, корінь документа) у своїй віртуальній конфігурації хоста .

У такому випадку vhosts.d/*.confнеобхідно редагувати


0

Крім того, ці корисно відповідні правильні відповіді іноді можна побачити однакову помилку через невідповідність та різні налаштування SSLчастини конфігурацій веб-сервера . (Очевидно, коли .htaccessфайл не використовується ).

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