Как установить 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, conf обратно AllowOverride None исправляет ошибку, но не позволяет перезаписывать URL.
o_O

В Ubuntu 12.04. Я нашел этот файл в / etc / apache2 / sites-available / default path
عثمان غني

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

Это делает магию для меня. После обновления сервера Debian моей компании с wheezy на jessie все в apache перестало работать, и после добавления этого все снова заработало.
periket2000

51

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

Если вы не являетесь администратором сервера, вы зависите от уровня AllowOverride, который позволяет вам администратор. Так что они могут помешать вам изменить некоторые важные настройки безопасности;

Если вы являетесь главным администратором конфигурации Apache, вы всегда должны использовать AllowOverride Noneи передавать все найденные примеры на основе google_, основанные на файлах .htaccess, в Directoryразделы основных файлов конфигурации. Поскольку содержимое .htaccess для .htaccessфайла in /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

Перейти к your_severpath/apache_ver/conf/ Открыть файл httpd.confв блокноте.

Найдите эту строку:

#LoadModule vhost_alias_module modules / mod_vhost_alias.so

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

LoadModule vhost_alias_module modules / 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 «allowoverride», над результатами поиска отображается поле, которое показывает следующее: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

Как другие пользователи объяснили здесь об использовании директивы allowoveride, которая используется для предоставления разрешения на использование .htaccess. Я хочу отметить одну вещь: никогда не используйте allowoverride all, если другие пользователи имеют доступ для записи .htaccess, вместо этого используйте allowoveride, чтобы разрешить определенные модули.

Такие как AllowOverride AuthConfig mod_rewriteвместо

AllowOverride All

Потому что такой модуль, как mod_mime, может отображать ваши файлы на стороне сервера в виде простого текста.


1
СПАСИБО!! Это именно то, что я искал. Я хочу перенаправить windwalker.com.au на windwanderer.com.au, поэтому мне нужно было разрешить эту директиву в файле .htaccess и НИЧЕГО БОЛЬШЕ. Всегда ставить AllowOverride ВСЕ значимые'ы снижает безопасность моих серверов.
Странник Джесси Ветра

1

Я также столкнулся с этой проблемой, и я нашел решение как 2 шага ниже: 1. В папке apache2 с поддержкой сайтов вы редактируете в элементе каталога, установив «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. Избегайте изменения этого файла. Он в первую очередь содержит операторы include и глобальные настройки. Перезаписать глобальные настройки в соответствующих файлах конфигурации, перечисленных здесь. Измените специфичные для хоста настройки (например, корень документа) в конфигурации вашего виртуального хоста .

В таком случае vhosts.d/*.confдолжны быть отредактированы


0

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.