Как установить AllowOverride all

135

Я хочу установить AllowOverride all Но я не знаю, как это сделать. Я нашел следующий код, выполнив поиск в google и вставив его в .htaccess

<Directory>
        AllowOverride All
</Directory>

Но после вставки я начал получать "Internal Server Error"

Может ли кто-нибудь мне посоветовать Где поставить этот код или как это сделать?

  • 1
    Директива <Directory> требует аргумента пути.
Теги:
.htaccess

9 ответов

235

Если вы находитесь на 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, чтобы включить перезапись модуля.

  • 48
    Мне также нужно было использовать sudo a2enmod rewrite , тогда это работало. На Ubuntu 14.04 LTS. Надеюсь, это будет полезно для кого-то.
  • 2
    Странно ... когда я делаю это, я получаю внутреннюю ошибку сервера. Означает ли это ошибку в файле .htaccess, расположенном в /var/www/.htaccess? Включение apache2, conf для AllowOverride None исправляет ошибку, но не позволяет перезаписывать URL.
Показать ещё 8 комментариев
38

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

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

Если вы являетесь главным диспетчером конфигурации apache, вы всегда должны использовать AllowOverride None и перенести все примеры google_based, которые вы найдете на основе файлов .htaccess в разделах Directory в основных файлах конфигурации. Поскольку содержимое .htaccess для файла .htaccess в /my/path/to/a/directory совпадает с инструкцией <Directory /my/path/to/a/directory>, за исключением того, что изменение конфигурации .htaccess динамического per-HTTP-запроса - это замедление вашего веб-сервера. Всегда предпочитайте статическую конфигурацию без проверок .htaccess (и вы также избегаете атак безопасности при изменениях .htaccess).

Кстати, в вашем примере вы используете <Directory>, и это всегда будет неправильно, инструкции Directory всегда содержат путь, например <Directory /> или <Directory C:> или <Directory /my/path/to/a/directory>. И, конечно, это не может быть помещено в .htaccess, поскольку .htaccess похож на инструкцию Directory, но в файле, присутствующем в этом каталоге. Конечно, вы не можете изменить AllowOverride в .htaccess, так как эта команда управляет уровнем безопасности файлов .htaccess.

14

Перейти к 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>

Затем перезапустите локальный сервер.

  • 0
    Работа выполнена! Тай сэр!
  • 4
    NB Order allow,deny и Allow from all для Apache 2.2 и более ранних версий. В Apache 2.4 эти две строки заменяются на Require all granted как показано в других ответах.
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>
  • 7
    и перезагрузите сервер после
  • 0
    После сотни повторных проверок моих .htacces - это было решением! Большое спасибо. Я думал, «все» - это значение по умолчанию для конфигурации apache.
Показать ещё 1 комментарий
7

Если вы используете 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 Нет на Разрешить все

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

  • 0
    Начиная с 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
5

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

Как AllowOverride AuthConfig mod_rewrite Вместо

AllowOverride All

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

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

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

Я не уверен, какую ОС вы используете, но эта ссылка для Ubuntu может дать вам несколько указаний о том, что делать.

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

1

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

Я сделал это на ubuntu. Надеюсь, что это поможет вам.

0

Сервер SuSE Linux Enterprise

Убедитесь, что вы редактируете правильный файл https://www.suse.com/documentation/sles11/book_sle_admin/data/sec_apache2_configuration.html

httpd.conf

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню