Allowoverride all что это
Перейти к содержимому

Allowoverride all что это

  • автор:

Файл .htaccess в Apache

Файлы .htaccess размещаются в папках сайтов веб-сервера Apache. Они позволяют изменять настройки веб-сервера на уровне конкретных папок.

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

Файлы .htaccess ещё называют «распределёнными конфигурационными файлами», поскольку настройки, применимые к директориям и которые можно указать в конфигурации, также можно разместить по одной или сразу несколько в файлах .htaccess. Эти настройки будут применены к текущей папке, где расположен .htaccess, а также ко всем её вложенным подпапкам.

Если имеются неправильные настройки в главном конфигурационном файле Apache, то веб-сервер не запустится. Но «с помощью» .htaccess можно сделать так, что неправильные настройки будут подгружены при обращении к файлам папки — в этом случае веб-сервер продолжит работу, но для этого запроса будет выдана ошибка 500 — Сервер пока не может обработать этот запрос.

Как включить .htaccess

Включение поддержки файла .htaccess сказывается на производительность сервера даже в том случае, если фактически этот файл не используется (объяснение ниже). Поэтому по умолчанию файл .htaccess отключён в Apache.

Включить .htaccess можно индивидуально для каждой директивы Directory. Для этого внутри неё нужно указать нужную настройку с помощью директивы AllowOverride. По умолчанию в главном конфигурационном файле следующее:

Как видно, AllowOverride установлен на None. Вместо None можно указать All или любые комбинации ключевых слов, например:

Для включения всех возможностей .htaccess установите так:

Чтобы настройки вступили в силу, перезапустите веб-сервер.

Файл .htaccess находится не в папках Apache, а в папках сайтов, то есть к нему может быть сделан запрос и, при неправильной настройке, посторонние его могут скачать. Файл .htaccess содержать информацию интересную для атакующего (хакеров), поэтому нужно запретить посторонним доступ к этому файлу. Запрет доступа к файлам .htaccess и .htpasswd для посетителей сайтов делается следующим образом:

По умолчанию эта настройка уже имеется в главном конфигурационном файле Apache.

Как поменять имя файла .htaccess

Для дополнительной безопасности, либо для своего удобства, можно поменять имя файла .htaccess. Точнее говоря, точно также как и файлы .htaccess будут обрабатываться файлы с указанным произвольным именем.

Для этого используется директива AccessFileName, которая позволяет поменять имя файла .htaccess на другое. Допустим мы решили назвать файл именем .config, тогда в конфигурационный файл сервера нужно добавить следующее:

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

В файле .htaccess можно использовать многие (но не все) настройки, которые можно прописать в конфигурационном файле сервера. Чтобы точно узнать про конкретную директиву, можно её использовать в .htaccess или нет, нужно открыть документацию https://httpd.apache.org/docs/current/, найти интересующую директиву и посмотрите, указан ли в строке Context файл .htaccess. Если указан, значит можно использовать.

Очень часто файл .htaccess используется для настройки доступа или для установки правил RewriteRule (mod_rewrite), но в этом файле можно использовать и другие настройки.

Точно также, из-за того, что обычно для контроля доступа и RewriteRule используется .htaccess, многие упускают из виду, что эти же самые настройки можно прописать и в главном конфигурационном файле Apache. То есть при желании вы можете отказаться от использования .htaccess и перенести настройки mod_rewrite в конфигурацию веб-сервера.

Синтаксис .htaccess

У .htaccess нет особенных настроек синтаксиса — директивы записываются также, как и в конфигурационных файлах.

Если вы получили ошибку 5xx — Ошибка сервера, это означает, что имеется ошибка в синтаксисе .htaccess.

Как применяются директивы файла .htaccess

Конфигурационные директивы, найденные в файле .htaccess, применяются к директории, в которой найден файл .htaccess, и всем её поддиректориям. Тем не менее, важно также помнить, что могут быть файлы .htaccess в родительских директориях. Директивы применяются в том порядке, как они были найдены. Поэтому файл .htaccess конкретной директории может перезаписывать директивы, найденные в файлах .htaccess выше в дереве директорий. А те, в свою очередь, могли уже перезаписать директивы, найденные ещё выше или директивы самого главного конфигурационного файла сервера.

В директории /www/htdocs/example1 у нас есть файл .htaccess содержащий следующее:

Примечание: у вас должна быть включена опция "AllowOverride Options" чтобы разрешить использовать директиву "Options" в .htaccess файлах. Либо значение AllowOverride должно быть установлено на All.

В директории /www/htdocs/example1/example2 у нас есть файл .htaccess содержащий:

Поскольку второй файл .htaccess в директории /www/htdocs/example1/example2, то выполнение CGI не разрешено, поскольку эффект будет иметь опция Options Includes, которая полностью перезаписывает значения настроек Options, имеющих место ранее.

Объединение файла .htaccess с главными конфигурационными файлами

Файлы .htaccess могут перезаписать раздел <Directory> для соответствующей директории, но будут перезаписаны другими типами конфигурационных разделов из главных конфигурационных файлов. Это можно использовать для закрепления конкретных конфигурацией, даже при наличии либеральных настроек AllowOverride. Например, для предотвращения выполнения скрипта, но позволив все другие настройки в .htaccess, вы можете использовать:

Этот пример подразумевает, что вашим DocumentRoot является /www/htdocs.

Когда (не) использовать файлы .htaccess

Если коротко, вы должны использовать файлы .htaccess только когда у вас нет доступа к главному конфигурационному файлу сервера. Как уже было отмечено, распространены неправильные мнения, что аутентификацию пользователей и директивы mod_rewrite можно указывать только в .htaccess. Это просто неверно. Конфигурации аутентификации можно поместить в главную конфигурацию сервера и, на самом деле, это более предпочтительный вариант. Аналогично директивы mod_rewrite в главной конфигурации сервера работают лучше по многим причинам.

Файлы .htaccess должны использоваться в случае, когда веб-мастеру нужно применить изменённые настройки к серверу на уровне директорий, но у него нет root доступа к системе сервера. Это обычный случай для виртуальных хостингов, то есть на практике очень часто файлы .htaccess являются единственной возможной альтернативой.

Тем не менее, в целом использование файлов .htaccess следует избегать когда это возможно. Любые настройки, которые вы собираетесь разместить в файле .htaccess, могут быть эффективно сделаны в разделе <Directory> в главном конфигурационном файле сервера.

Имеется две главные причины избежания использования файлов .htaccess.

Первая причина — это производительность. Когда AllowOverride установлена на разрешение использования файлов .htaccess, httpd будет искать файлы .htaccess в каждой папке. То есть разрешение файлов .htaccess ударяет по производительности не зависимо от того, используете вы на самом деле .htaccess или нет, создали вы хоть один файл .htaccess или нет. Файл .htaccess загружается каждый раз, когда запрашивается документ.

Более того, помните, что httpd должен искать файлы .htaccess в директориях более высокого уровня чтобы собрать полный набор директив, которые должны быть применены. Таким образом, если файл запрошен из директории /www/htdocs/example, то httpd должен искать эти файлы в:

  • /.htaccess
  • /www/.htaccess
  • /www/htdocs/.htaccess
  • /www/htdocs/example/.htaccess

И таким образом при каждом запросе к файлу из текущей директории, в системе выполняется 4 дополнительных доступа к файлу, даже если ни оидн из них не существует. (Примечание: описан случай, когда файл .htaccess был включён для /, что встречается не очень часто).

В случае директив RewriteRule в контексте .htaccess эти регулярные выражения должны перекомпилироваться с каждым запросом к этой директории, в то время как в контексте главной конфигурации сервера, они компилируются только один раз и кэшируются. Дополнительно, сами правила более сложные, поскольку они должны работать с ограничениями, приносимыми контекстом директории и mod_rewrite.

Второе о чём нужно помнить, это безопасность. Вы разрешаете пользователям модифицировать конфигурацию сервера, что может привести к изменениям за пределами вашего контроля.

Помещение файла .htaccess с управляющими директивами в папку /www/htdocs/example эквивалентно помещению этих же директив в раздел Directory: <Directory "/www/htdocs/example"> в главных настройках конфигурации сервера:

Содержимое файла .htaccess в /www/htdocs/example

Секция из файла httpd.conf:

При этом размещение этой конфигурации в файле настроек сервера приведёт в результате к меньшему влиянию на производительность, поскольку конфигурация загружается только один раз при запуске httpd, а не при каждом запросе к файлу.

Можно полностью отключить использование файлов .htaccess установив директиву AllowOverride на none:

Решение проблем

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

Чаще всего проблема в том, что AllowOverride не установлена так, чтобы учитывались ваши конфигурационные директивы. Убедитесь, что у вас не включено

Следующий тест позволит однозначно ответить на вопрос, включена ли поддержка файлов .htaccess или нет: поместите какой-нибудь мусор в файл .htaccess и перезагрузите страницу. Если не появиться ошибка сервера, то практически наверняка включено AllowOverride None.

С другой стороны, если вы получаете ошибки сервера при попытке доступа к документам, проверьте лог error (ошибок) httpd. Весьма вероятно, что он скажет вам, что эта используемая в файле .htaccess директива не разрешена:

Это говорит о том, что либо вы используете директиву, которая не разрешена в файлах .htaccess, или что у вас просто нет установленной AllowOverride на уровень, достаточном для используемой директивы.

Ещё один вариант, в журнале может быть сказано, что у вас ошибка синтаксиса в самой используемой директиве:

В этом случае сообщение об ошибке должно быть конкретным о том, что у вас не так с файлом .htaccess и используемыми директивами.

AllowOverride All

AllowOverride All — директива, за счет которой в конфигурации Apache задается использовать файлы .htaccess или нет. .htaccess в свою очередь позволяет задавать определенные настройки для каждого подкаталога, созданного для сайта переопределяя настройки виртуального хоста.

AllowOverride All и файлы .htaccess

Конфигурационный файл виртуального хоста Apache в общем виде выглядит следующим образом:

<VirtualHost *:80>

ServerName example.com
ServerAlias www.example.com

ServerAdmin [email protected]
DocumentRoot /var/www/example.com/

ErrorLog $/error.log
CustomLog $/access.log combined

<Directory />
Options -ExecCGI -Indexes -Includes +FollowSymLinks
AllowOverride All

SetEnvIf X-Forwarded-Proto https HTTPS=on

В нем задается имя сайта, порт, обращаясь на который можно получить ответ и каталог из которого отдается контент. Также указываются параметры логирования и настройки для директорий.

Директория определена только одна <Directory />, их может быть больше и для каждой можно задать некоторые опции:

-ExecCGI — не выполнять CGI скрипты

-Indexes — не выводить содержимое каталога при отсутствии index.php или index.html

-Includes — не разрешать Server-Side Includes, которая представляет собой файлы .shtml, собираемые из других html файлов и cgi-скриптов

+FollowSymLinks — как следует из названия директивы, Apache сможет переходить по символьным ссылкам

AllowOverride All — указывает, что для корневого каталога виртуального хоста и всех вложенных нужно использовать .htaccess

.htaccess может быть своим в любом каталоге, что позволяет размещать любое количество сайтов или разделов сайта, доступных в дальнейшем по адресам example.com/sub, example.com/2 и т.д.

Такое поведение может быть очень удобно, .htaccess всегда используются на серверах с большим количеством сайтов: серверах хостинг провайдеров. Оно позволяет, например, задавать для каждого каталога свою кодировку, в которой веб-сервер будет отдавать ответ клиенту..

Если с сервера работает одно приложение — один сайт, AllowOverride лучше выставлять в None и задавать все настройки в конфигурационном файле. Это означает несколько большую трудоемкость процесса разворачивания сайта, но позволяет добиться лучшей производительности. Особенно при высоких нагрузках.

Allowoverride all что это

Синтаксис: AddModule модуль модуля .
Контекст: конфигурация сервера
Состояние: основное
Совместимость: AddModule доступен тольоко в Apache 1.2 выше

Сервер может иметь модули, которые были скомпилированы, но активно не используются. Эта директива может применяться для того, чтобы инициализировать использование этих модулей. Сервер поставляется со списком pre-loaded активных модулей; этот список может быть очищен с помощью ClearModuleList директивы.

AllowOverride директива

  • AuthConfig — допускает использование директив разрешения (AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile, AuthName, AuthType, AuthUserFile, require, и т.д..).
  • FileInfo — допускает использование директив, управляющих типами документа (AddEncoding, AddLanguage, AddType, DefaultType, ErrorDocument, LanguagePriority, и т.д..).
  • Indexes — допускает использование деректив управления индексацией каталога(AddDescription, AddIcon, AddIconByEncoding, AddIconByType, DefaultIcon, DirectoryIndex, FancyIndexing, HeaderName, IndexIgnore, IndexOptions, ReadmeName, и т.д..).
  • Limit — допускает использование основных директив управления доступом ( allow , deny и order ).
  • Options — допускает использование директив, управляющих специфическими особенностями каталога (Options и XBitHack).

AuthName директива

Синтаксис: AuthName auth-область
Контекст: каталог, .htaccess
Отмена: AuthConfig
Состояние: основное

Эта директива присваивает каталогу имя как области доступа. Эта область дается пользователю для запроса у него username и пароля. Директива должна использоваться совместно с AuthType и require директивами, и директивами типа AuthUserFile и AuthGroupFile.

AuthType директива

Синтаксис: AuthType тип
Контекст: каталог, .htaccess
Отмена: AuthConfig
Состояние: основное

Эта директива выбирает тип идентификации пользователя для каталога. Только Basic в настоящее время реализован. Эта деректива должна использоваться совместно с дерективами AuthName и require, и директивами типа AuthUserFile и AuthGroupFile.

BindAddress директива

  • *
  • Адрес IP
  • Полное domain name

ClearModuleList директива

Синтаксис: ClearModuleList
Контекст: конфигурация сервера
Состояние: основное
Совместимость: ClearModuleList доступен только в Apache 1.2 и выше.

Сервер поставляется со встроенным списком активных модулей. Эта директива очищает список. Применение этой дерективы подразумевает, что список модулей будет затем повторно заполнен с помощью директивы AddModule.

DefaultType директива

    DefaultType image/gif

< Directory> директива

    <Directory /usr/local/httpd/htdocs>
    Options Indexes FollowSymLinks
    </Directory>


    <Directory

    <Directory />
    AllowOverride None
    </Directory>

    <Directory /home/*>
    AllowOverride FileInfo
    </Directory>

  • Выполнится директива AllowOverride None ( отключение .htaccess файл).
  • Выполнится директива AllowOverride FileInfo ( для каталога /home/web).
  • Выполнятся любые FileInfo директивы в /home/web/.htaccess

    <Directory />
    Order Deny,Allow
    Deny from All
    </Directory>

DocumentRoot директива

    DocumentRoot /usr/web

ErrorDocument директива

  1. выдать клиенту простое жестко закодированное сообщение об ошибках .
  2. выдать настроенное сообщение .
  3. перенаправить(redirect) запрос локальному URL, чтобы обработать проблему/ошибку
  4. перенаправить(redirect) запрос внешнему URL, чтобы обработать проблему/ошибку

    ErrorDocument 500 http://foo.example.com/cgi-bin/tester
    ErrorDocument 404 /cgi-bin/bad_urls.pl
    ErrorDocument 401 /subscription_info.html
    ErrorDocument 403 «Извините, сегодня доступ Вам закрыт

ErrorLog директива

    ErrorLog /dev/null

< Files>

Синтаксис : <Files имя-файла > . </Files>
Контекст : конфигурация сервера, virtual host, htaccess
Состояние : основное
Совместимость : доступно в Apache 1.2 и выше.

<Files> директива предназначена для управления доступом к файлу. Эта директива тесно связана с директивами <Directory> и <Locations>, они должны быть согласованы с </Files> директивой. Директивы, которые применяются к данному имени файла должны быть перечислены внутри. <Files> разделы обрабатываются в том порядке, в каком они появляются в файле конфигурации, после <Directory> разделов и объявления .htaccess файлов, но перед разделами <Location>.

Параметр имя-файла должен включить имя файла, или wild-card, в котором «?» соответствует любому одиночному символу, а «*» соответствует любой последовательности символов. Расширенные регулярные выражения также могут использоваться, с добавлением символа

    <Fales

Group директива

  • Имя группы — дается имя группы.
  • # номер группы — ссылается на номер группы.

HostNameLookups директива

Синтаксис : HostNameLookups boolean
Значение по умолчанию: HostNameLookups on
Контекст : конфигурация сервера, virtual host
Состояние : основное

Эта директива подключает поиск в DNS, чтобы host имена могли регистрироваться в log-файлах. Наличие этой директивы позволяет использовать имена в <Limit> блоках для управления доступом.

На часто посещаемых сайтах рекомендуется установить эту директиву в off , так как доступ к поисковым таблицам DNS длителен по времени. Утилита logresolve , поставляемая в каталоге support/ , может применятся для поиска host имени по регестрируемому IP-адресу автономно.

IdentityCheck директива

Синтаксис : IdentityCheck boolean
Значение по умолчанию: IdentityCheck off
Контекст : конфигурация сервера, virtual host
Состояние : основное

Эта директива включает регистрации, соответствующую RFC1413, удаленного имени пользователя для каждого соединения, где клиентская машина выполняет identd или что — нибудь подобное. Эта информация сохраняется в файле регистрации доступа. Boolean может быть установлен в on или off .

Этой информации нельзя доверять, разве-что для элементарной трассировки.

Обратите внимание, что это может вызывать серьезные временные задержки при обращении к вашему серверу, так как для каждого запроса необходимо выполнить поиск. Когда работает firewalls, каждый поиск, вероятней всего, будет неудачным и добавлять за счет этого 30 секунд ожидания к каждой передаче. Т.о. это лучше отключить для web-сервера, доступного в Internet.

< IfModule>

  • имя модуля
  • !имя модуля

KeepAlive

Синтаксис: (Apache 1.1) KeepAlive максимальное-кол.запросов
Значение по умолчанию: (Apache 1.1) KeepAlive 5
Синтаксис: (Apache 1.2) KeepAlive on/off
Значение по умолчанию: (Apache 1.2) KeepAlive on
Контекст : конфигурация сервера
Состояние : основное
Совместимость : KeepAlive доступен только в Apache 1.1 и выше.

Эта директива включает Keep-Alive поддержку.

Apache 1.1: Устанавливает max-кол.запросов обрабатываемых Apache одновременно. Ограничение наложено, чтобы предотвратить сервер от перегрузки. Если установить эту директиву в 0 — сервер не будет отвечать на клиентские запросы.

Apache 1.2 и выше: Установка в «on» включает постоянно открытое соединение, «off» отключает. См. также MaxKeepAliveRequests директиву.

KeepAliveTimeout

Синтаксис : KeepAliveTimeout секунд
Значение по умолчанию: KeepAliveTimeout 15
Контекст : конфигурация сервера
Состояние : основное
Совместимость : KeepAliveTimeout доступен только в Apache 1.1 и выше.

Заданное число секунд Apache будет ждать следующий запрос перед закрытием соединения.

Listen

Синтаксис : Listen [IP адрес:] номер порта
Контекст : конфигурация сервера
Состояние : основное
Совместимость : Listen доступен только в Apache 1.1 и выше.

Listen директива настраивает Apache на более чем один IP адрес или порт; по умолчанию он отвечает на запросы на всех интерфейсах IP, но только на порте, заданном директивой Port.

См. Также: DNS проблемы
См. Также: Установка адресов и портов Apache
См. Также: Известные Ошибки

< Limit> директива

    <Limit GET POST>
    require valid-user
    </Limit>

< Location>

Синтаксис : <Location URL > . </Location>
Контекст : конфигурация сервера, virtual host
Состояние : основное
Совместимость : Location доступно только в Apache 1.1 и выше.

<Location> директива обеспечивает управление доступом к URL. Она подобна директиве <Directory> и должна быть с ней согласована. Директивы, которые относятся к данному URL должны быть перечислен внутри. <Location> разделы обрабатываются в порядке их появления в файле конфигурации, после <Directory> раздела и объявления .htaccess файлов.

Обратите внимание, что URL — префикс должен быть сохранен для proxy запросов в форме /path/, и не должен включить http://servername. Он(URL) не обязательно должен защищать каталог (это может быть индивидуальный файл, или ряд файлов), и может включать wild-card. В wild-card строке, «?» cоответствует любому одиночному символу, и «*» соответствует любой последовательности символов.

Apache 1.2 и выше: Расширенные регулярные выражения могут также использоваться, с добавлением

    <Location

    <Location /status>
    SetHandler server-status
    order deny,allow
    deny from all
    allow from .foo.com
    </Location>

MaxClients директива

Синтаксис : MaxClients число
Значение по умолчанию: MaxClients 256
Контекст : конфигурация сервера
Состояние : основное

MaxClients директива устанавливает ограничение числа одновременно обслуживаемых запросов; не более чем это число порожденнных процессов сервера будут созданы.

MaxKeepAliveRequests

Синтаксис : MaxKeepAliveRequests число
Значение по умолчанию: MaxKeepAliveRequests 100
Контекст : конфигурация сервера
Состояние : основное
Совместимость : Доступна только в Apache1.2 и выше.

MaxKeepAliveRequests директива ограничивает число допустимых запросов на одно соединение когда KeepAlive включен. Если она установлена в «0», допускаются неограниченные запросы. Мы рекомендуем, чтобы эта установка была по возможности выше для большей производительности сервера.

MaxRequestsPerChild директива

  • это ограничивает объем памяти потребляемой процессом (через случайную утечку памяти);
  • ограничени времени жизни процесса позволяет уменьшить число процессов при старте сервера.

MaxSpareServers директива

Синтаксис : MaxSpareServers число
Значение по умолчанию: MaxSpareServers 10
Контекст : конфигурация сeрвера
Состояние : основное

MaxSpareServers директива устанавливает желательное максимальное число неактивных порожденнных процессов сервера. Неактивный Процесс — тот, который не обрабатывает запрос в данный момент. Если имеются больше чем MaxSpareServers неактивных процессов, то Родительский процесс уничтожит лишние.

Настройка этого параметра рекомендуется только на очень посещаемых сайтах. Установка этого параметра в большое число — плохая идея.

См. также MinSpareServers и StartServers.

MinSpareServers директива

Синтаксис : MinSpareServers число
Значение по умолчанию: MinSpareServers 5
Контекст : конфигурация сервера
Состояние : основное

MinSpareServers директива устанавливает желаемое минимальное число неактивных порожденнных процессов сервера. Неактивный Процесс — тот, который не обрабатывает запрос в данный момент. Если имеется меньшее количество чем MinSpareServers неактивных процессов, то родительский процесс создает новые порожденные процессы за максимум 1 секунду.

Настройка этого параметра рекомендуется только на очень посещаемых сайтах. Установка этого параметра в большое число — плохая идея.

См. также MaxSpareServers и StartServers.

Options директива

  • All — все опции кроме MultiViews.
  • ExecCGI — разрешается выполнение сценариев CGI.
  • FollowSymLinks — сервер будет следовать за символическими связями в этом каталоге.
  • Includes — Server-site includes(SSI), разрешаются.
  • IncludesNOEXEC — Server-site includes(SSI), разрешается, но команда #exec и #include CGI-скриптов заблокированны.
  • Indexes — если запрошенный URL соответствует каталогу, и в этом катлоге нет ничего соответствующего DirectoryIndex (например Index.html), то сервер возвратит форматированную распечатку содерщания каталога.
  • MultiViews — Content negotiated MultiViews допускаются.
  • SymLinksIfOwnerMatch — сервер будет следовать только тем символическим связям, для которых целевой файл или каталог имеют тот же идентификатор пользователя что и связь.

    <Directory /web/docs>
    Options Indexes FollowSymLinks
    </Directory>
    <Directory /web/docs/spec>
    Options Includes
    </Directory>

    <Directory /web/docs>
    Options Indexes FollowSymLinks
    </Directory>
    <Directory /web/docs/spec>
    Options +Includes -Indexes
    </Directory>

PidFile директива

Синтаксис : PidFile имя-файла
Значение по умолчанию: PidFile logs/httpd.pid
Контекст : конфигурация сервера
Состояние : основное

PidFile директива устанавливает файл, в котором сервер записывает идентификатор процесса daemon. Если имя файла не начинается с символа (/), имя будет принято относительно ServerRoot. PidFile используется только в standalone режиме.

Часто бывает необходимо изменить конфигурацию сервера, т.е., чтобы он перечитал файлы конфигурации. Этого можно добиться посылкой сигнала SIGHUP (-1) процессу с идентификатором, содержащимся, в PidFile.

На PidFile распространяются тем же предупреждения относительно защиты, что и на log-файлы.

Port директива

  • В отсутствие Listen или BindAddress директив, определяющих номер порта, директива Port устанавливает сетевой порт, на котором сервер слушает. Если имеется, любая из директив Listen или BindAddress опредиляющая номер порта, то директива Port игнорируется.
  • Директива Port устанавливает системную переменную SERVER_PORT (для CGI и SSI), и используется сервером для генерации URL, который ссылается на себя (например при создании внешнего переназначения на себя).

require директива

  • require user userid userid . — только указанные пользователи имеют доступ к каталогу.
  • require group имя-группы имя-группы . — только пользователи из указанных групп имеют доступ к каталогу.
  • require valid-user — все допустимые пользователи имеют доступ к каталогу.

    AuthType Basic
    AuthName somedomain
    AuthUserFile /web/users
    AuthGroupFile /web/groups
    <Limit GET POST>
    require group admin
    </Limit>

ResourceConfig директива

    ResourceConfig /dev/null

RLimitCPU директива

Синтаксис : RLimitCPU # или ‘max’ [# или ‘max’]
Значение по умолчанию: Возврат к исходному состоянию используя значения по умолчанию операционной системы
Контекст : конфигурация сервера, virtual host
Состояние : основное
Совместимость : RLimitCPU доступен только в Apache 1.2 и выше

Получает 1 или 2 параметра. 1-й параметр устанавливает ограничение ресурса программного обеспечения для всех процессов и 2-й параметр устанавливает максимальное ограничение ресурса. Любой параметр может быть числовой или «max», чтобы указать серверу, что ограничение должно быть установлено к максимуму, позволенному конфигурацией операционной системы. Подъем максимального ограничения ресурса требует, чтобы сервер выполнилась под root, или в начальной фазе запуска.

Ограничения ресурса ЦЕНТРАЛЬНОГО ПРОЦЕССОРА сказываются на процессе.

См. также RLimitMEM или RLimitNPROC.

RLimitMEM директива

Синтаксис : RLimitMEM # или ‘max’ [# или ‘max’]
Значение по умолчанию: Возврат к исходному состоянию используя значения по умолчанию операционной системы
Контекст : конфигурация сервера, virtual host
Состояние : основное
Совместимость : RLimitMEM доступен только в Apache 1.2 и выше

Получает 1 или 2 параметра. 1-й параметр устанавливает ограничение ресурса программного обеспечения для всех процессов и 2-й параметр устанавливает максимальное ограничение ресурса. Любой параметр может быть числовой, или max, чтобы указать серверу, что ограничение должно быть установлено к максимуму, допустимому конфигурацией операционной системы. Подъем максимального ограничения ресурса требует, чтобы сервер выполнился с полномочиями root, или в начальной фазе запуска.

Ограничения ресурса Памяти выражены в байтах на процесс.

См. также RLimitCPU или RLimitNPROC.

RLimitNPROC директива

Синтаксис : RLimitNPROC # или ‘max’ [# или ‘max’]
Значение по умолчанию: Возврат к исходному состоянию используя значения по умолчанию операционной системы
Контекст : конфигурация сервера, virtual host
Состояние : основное
Совместимость : RLimitNPROC доступен только в Apache 1.2 и выше

Получает 1 или 2 параметра. 1-й параметр устанавливает ограничение ресурса программного обеспечения для всех процессов и 2-й параметр устанавливает максимальное ограничение ресурса. Любой параметр может быть число, или max, чтобы указать серверу, что ограничение должно быть установлено к максимуму, допустимому конфигурацией операционной системы. Подъем максимального ограничения ресурса требует, чтобы сервер работал с root-полномочиями, или в начальной фазе запуска.

Управляет ограничением процессов числом процессов на пользователя.

Обратите внимание: Если CGI процессы выполняются под тем же userids что и сервер, эта директива будет ограничивать число процессов, которые сервер непосредственно может создавать. Доказательством этой ситуации будет cannot fork сообщения в error_log.

См. также RLimitMEM или RLimitCPU.

Satisfy

Синтаксис : Satisfy ‘any’ или ‘all’
Значение по умолчанию: Satisfy all
Контекст : directory, .htaccess
Состояние : основное
Совместимость : Satisfy доступен только в Apache 1.2 и выше

Определяет стратегию доступа, если используются и allow и require. Параметр может быть или ‘all’ или ‘any’ . Эта директива полезна только, если доступ к области ограничивается и, username/password и адресом машины-клиента. В этом случае заданное по умолчанию значение («all») требует, чтобы пользователь передал адрес, которому доступна ограниченная область, и ввел допустимый username и пароль. С «any» опцией клиенту будет предоставлен доступ, если он или передаст адрес хоста, которому открыт доступ к данной области, или введет допустимый username и пароль. Это может использоваться для ограничения доступа к области паролем и открытого доступа к этой же области хостам с определенными адресами.

ScoreBoardFile директива

Синтаксис : ScoreBoardFile имя-файла
Значение по умолчанию: ScoreBoardFile logs/apache_status
Контекст : конфигурация сервера
Состояние : основное

ScoreBoardFile директива требуется в некоторых архитектурах, чтобы разместить файл, используемый сервером для связи между порожденными процессами и родительским. Самый простой способ выяснять, требует ли ваша архитектура файл-табло это — запустить Apache и посмотреть, создает ли он файл, указанный в директиве. Если вашей архитектуре это необходимо, Вы должны гарантировать, что этот файл не используется в то же самое время больше чем одним вызовом Apache.

Вы можете увеличить быстродействие сервера размещая ScoreBoardFile на RAM-диске. Но будьте внимательны, Вы должны учитывать те же предупреждения относительно размещения ScoreBoardFile, что и к log-файлам, с точки зрения защиты.

Apache 1.2 и выше:

Пользователи Linux 1.x могут добавить флаг -DHAVE_SHMGET к EXTRA_CFLAGS в файл Configuration, но это не будет работать во всех версиях Linux 1.x.

Пользователи SVR4, так же могут попробовать добавить флаг -DHAVE_SHMGET к EXTRA_CFLAGS в свой Configuration файл. Это, вероятно, должно сработать, но мы не успели проверить это для версии 1.2.

См. Также: Остановка и перезапуск Apache

SendBufferSize директива

Синтаксис : SendBufferSize байты
Контекст : конфигурация сервера, virtual host
Состояние : основное

Cервер установит размер буфера TCP к указанному кол. байт .

ServerAdmin директива

    ServerAdmin www-admin@foo.bar.com

ServerAlias директива

Синтаксис : ServerAlias host1 host2 .
Контекст : virtual host
Состояние : основное
Совместимость : ServerAlias доступно только в Apache 1.1 и выше.

ServerAlias директива устанавливает альтернативные имена хостов, для использования с virtual host базирующихся на Host-header.

См. Также: Подробное описание соответствия Virtual Host

ServerName директива

    ServerName www.wibble.com

ServerPath директива

Синтаксис : ServerPath имя пути
Контекст : virtual host
Состояние : основное
Совместимость : ServerPath доступно только в Apache 1.1 и выше.

ServerPath директива устанавливает наследование имя-пути URL для хоста, чтобы использовать virtual host базирующийся на Host-header.

См. Также: Подробное описание соответствия Virtual Host

ServerRoot директива

Синтаксис : ServerRoot каталог — имя файла
Значение по умолчанию: ServerRoot /usr/local/etc/httpd
Контекст : конфигурация сервера
Состояние : основное

ServerRoot директива устанавливает корневой каталог сервера. Обычно он содержит подкаталоги conf/ и logs/ . Пути для других файлов конфигурации устанавливаются относительно этого каталога.

См. также опцию -d к httpd.

ServerType директива

  • inetd — сервер будет запущен в системе процессом inetd; команда для старта сервера будет добавлена к /etc/inetd.conf
  • standalone — сервер запускается как daemon; команда для запуска сервера будет добавлена в системные сценарии запуска. ( /etc/rc.local или /etc/rc3.d/ . )

StartServers директива

Синтаксис : StartServers число
Значение по умолчанию: StartServers 5
Контекст : конфигурация сервера
Состояние : основное

StartServers директива устанавливает число порожденнных процессов сервера при запуске. Так как число процессов динамически контролируется в зависимости от загрузки, то обычно нет причин корректировать этот параметр.

См. также MinSpareServers и MaxSpareServers.

How to Set AllowOverride all

I want to set the AllowOverride all But I don’t know how to do it. I have found the following code by searching the google and pasted it in .htaccess :

But after pasting it I started receiving «Internal Server Error»

Can anyone guide me where to put this code or how to do it?

the's user avatar

12 Answers 12

In case you are on Ubuntu, edit the file /etc/apache2/apache2.conf (here we have an example of /var/www ):

and change it to;

You may need to also do sudo a2enmod rewrite to enable module rewrite.

Isaac's user avatar

The main goal of AllowOverride is for the manager of main configuration files of apache (the one found in /etc/apache2/ mainly) to decide which part of the configuration may be dynamically altered on a per-path basis by applications.

If you are not the administrator of the server, you depend on the AllowOverride Level that theses admins allows for you. So that they can prevent you to alter some important security settings;

If you are the master apache configuration manager you should always use AllowOverride None and transfer all google_based example you find, based on .htaccess files to Directory sections on the main configuration files. As a .htaccess content for a .htaccess file in /my/path/to/a/directory is the same as a <Directory /my/path/to/a/directory> instruction, except that the .htaccess dynamic per-HTTP-request configuration alteration is something slowing down your web server. Always prefer a static configuration without .htaccess checks (and you will also avoid security attacks by .htaccess alterations).

By the way in your example you use <Directory> and this will always be wrong, Directory instructions are always containing a path, like <Directory /> or <Directory C:> or <Directory /my/path/to/a/directory> . And of course this cannot be put in a .htaccess as a .htaccess is like a Directory instruction but in a file present in this directory. Of course you cannot alter AllowOverride in a .htaccess as this instruction is managing the security level of .htaccess files.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *