Apache Версия 2.0 Сервера HTTP
.htaccess
файлы обеспечивают способ сделать изменения конфигурации на в-справочник основании.
Связанные Модули | Связанные Директивы |
---|---|
.htaccess
файлы (или "распределенные файлы конфигурации") обеспечивают способ сделать изменения конфигурации на в-справочник основании. Файл, содержа одну или более директив конфигурации, помещен в специфический справочник документа, и директивы обращаются к тому справочнику, и всем подсправочникам этого.
если Вы хотите назвать ваш
.htaccess
подать что - то еще, Вы можете изменить название файла, используя
AccessFileName
директива. Например, если Вы предпочитаете назвать файл
.config
тогда Вы можете поместить следующее в ваш файл конфигурации сервера:
AccessFileName .config
вообще,
.htaccess
файлы используют тот же самый синтаксис как
main configuration files
. то, что Вы можете вставить эти файлы, определено
AllowOverride
директива. Эта директива определяет, в категориях, какие директивы удостоятся чести, если они будут найдены в a
.htaccess
файл. Если директива разрешается в a
.htaccess
файл, документация для той директивы будет содержать Отвергающуюся секцию, определяя, в каком должна быть ценность
AllowOverride
для той директивы, которая будет разрешена.
например, если Вы смотрите на документацию для
AddDefaultCharset
директива, Вы найдете, что в этом разрешает
.htaccess
файлы. (См. линию Контекста в направляющем резюме.)
Override
линия читает
FileInfo
. таким образом, Вы должны иметь по крайней мере
AllowOverride FileInfo
для этой директивы, чтобы удостоиться чести в
.htaccess
файлы.
если Вы неуверены, разрешается ли специфическая директива в a
.htaccess
файл, смотрите на документацию для той директивы, и проверяйте линию Контекста для ".htaccess".
вообще, Вы никогда не должны использовать
.htaccess
файлы, если Вы не имеете доступа к главному файлу конфигурации сервера. Есть, например, преобладающее неправильное представление, что пользовательское установление подлинности должно всегда приканчиваться
.htaccess
файлы. Это - просто не случай. Вы можете поместить пользовательские опознавательные конфигурации в основном конфигурация сервера, и это, фактически, привилегированный способ сделать вещи.
.htaccess
файлы должны использоваться в случае, где поставщики оперативной информации должны сделать изменения конфигурации к серверу на в-справочник основании, но не иметь доступа корня на системе сервера. Когда администратор сервера не желает делать частые изменения конфигурации, могло бы быть желательно разрешить индивидуальным пользователям делать эти изменения в
.htaccess
файлы для себя. Это особенно верно, например, в случаях, где ISPs принимают гостей за многократными пользовательскими участками на единственной машине, и хотят, чтобы их пользователи были в состоянии изменить их конфигурацию.
однако, вообще, использование
.htaccess
файлов нужно избежать когда возможно. Любая конфигурация, что Вы рассмотрели бы включение a
.htaccess
файл, может так же, как эффективно быть сделан в a
<Directory>
секция в вашем главном файле конфигурации сервера.
есть две главных причины избежать использования
.htaccess
файлы.
первый из них - работа. Когда
AllowOverride
собирается позволить использование
.htaccess
файлы, Apache будет смотреть в каждом справочнике для
.htaccess
файлы. Таким образом, разрешение
.htaccess
файлы вызывают хит работы, действительно ли Вы фактически даже используете их! Кроме того,
.htaccess
файл загружен каждый раз, документ требуют.
далее отметьте, что Apache должен искать
.htaccess
файлы во всех высокоуровневых справочниках, чтобы иметь полный набор из директив, чтобы это применилось. (См. секцию на
how directives are applied
.) Таким образом, если файл требуют из справочника
/www/htdocs/example
, Apache должен искать следующие файлы:
/.htaccess
/www/.htaccess
/www/htdocs/.htaccess
/www/htdocs/example/.htaccess
и так, для каждого доступа файла из того справочника, есть 4 дополнительных доступа файловой системы, даже если ни один из тех файлов не присутствует. (Отметьте, что это только имело бы место если
.htaccess
для файлов позволяли
/
, который не обычно случай.)
второе рассмотрение - одна из безопасности. Вы разрешаете пользователям изменять конфигурацию сервера, которая может привести, изменяется, который Вы не имеете никакого контроля. Тщательно рассмотрите, хотите ли Вы дать вашим пользователям эту привилегию. Отметьте также, что давая пользователям меньше привилегий чем они нуждаются, приведет к дополнительным техническим запросам поддержки. Удостоверьтесь, что Вы ясно говорите вашим пользователям, какой уровень привилегий Вы дали им. Определение точно, что Вы установили
AllowOverride
к, и обращение их к уместной документации, спасет себя большой беспорядок позже.
отметить, что полностью эквивалентно поместить a
.htaccess
файл в справочнике
/www/htdocs/example
содержа директиву, и поместить ту ту же самую директиву в Директивную секцию
<Directory /www/htdocs/example>
в вашей главной конфигурации сервера:
.htaccess
файл в
/www/htdocs/example
:
/www/htdocs/example
AddType text/example .exm
httpd.conf
file
<Directory /www/htdocs/example>
AddType text/example .exm
</Directory>
однако, помещение этой конфигурации в вашем файле конфигурации сервера приведет к меньшему количеству хита работы, поскольку конфигурация загружена однажды, когда Apache начинается, а не каждый раз, файл требуют.
использование
.htaccess
файлы могут быть инвалидами полностью, устанавливая
AllowOverride
директива к
none
:
AllowOverride None
директивы конфигурации, найденные в a
.htaccess
файл применен к справочнику в который
.htaccess
файл найден, и ко всем подсправочникам этого. Однако, важно также помнить, что, возможно, был
.htaccess
файлы в справочниках выше. Директивы применены в заказе, которым они найдены. Поэтому, a
.htaccess
файл в специфическом справочнике может отвергнуть директивы, найденные в
.htaccess
файлы, найденные выше в директивном дереве. И те, в свою очередь, возможно, отвергли директивы, найденные все же выше, или в основном файл конфигурации сервера непосредственно.
пример:
в справочнике
/www/htdocs/example1
мы имеем a
.htaccess
файл, содержащий следующее:
Options +ExecCGI
(примечание: Вы должны иметь "
AllowOverride Options
"в действительности, чтобы разрешить использование"
Options
"директива в
.htaccess
файлы.)
в справочнике
/www/htdocs/example1/example2
мы имеем a
.htaccess
файл, содержащий:
Options Includes
из-за этой секунды
.htaccess
файл, в справочнике
/www/htdocs/example1/example2
, выполнение CGI не разрешается, как только
Options Includes
является в действительности, который полностью отвергает любое более раннее урегулирование, которое, возможно, было в месте.
как обсуждено в документации относительно
Configuration Sections
,
.htaccess
файлы могут отвергнуть
<Directory>
секции для соответствующего справочника, но будет overriden другими типами секций конфигурации от главных файлов конфигурации. Этот факт может использоваться, чтобы предписать определенные конфигурации, даже в присутствии либерала
AllowOverride
урегулирование. Например, чтобы предотвратить выполнение подлинника, позволяя что - нибудь еще быть установлен в
.htaccess
Вы можете использовать:
<Directory />
Allowoverride All
</Directory>
<Location />
Options +IncludesNoExec -ExecCGI
</Location>
если Вы подскочили непосредственно к этой части документа, чтобы узнать, как сделать установление подлинности, важно отметить одну вещь. Есть общее неправильное представление, которое Вы обязаны использовать
.htaccess
файлы, чтобы осуществлять установление подлинности пароля. Дело обстоит не так. Помещение опознавательных директив в a
<Directory>
секция, в вашем главном файле конфигурации сервера, является привилегированным способом осуществить это, и
.htaccess
файлы должны использоваться, только если Вы не имеете доступа к главному файлу конфигурации сервера. См.
above
для обсуждения того, когда Вы должны и не должны использовать
.htaccess
файлы.
сказав, что, если Вы все еще думаете, что Вы должны использовать a
.htaccess
файл, Вы можете найти, что конфигурация типа того, что следует, может работать для Вас.
Вы должны иметь "
AllowOverride AuthConfig
"в действительности для этих директив, чтобы удостоиться чести.
.htaccess
содержание файла:
AuthType Basic
AuthName "Password Required"
AuthUserFile /www/passwords/password.file
AuthGroupFile /www/passwords/group.file
Require Group admins
отметить это
AllowOverride AuthConfig
должен быть в действительности для этих директив, чтобы иметь любой эффект.
пожалуйста см. authentication tutorial для более полного обсуждения установления подлинности и разрешения.
другое общее использование
.htaccess
файлы должны позволить Сторону Сервера, Включает для специфического справочника. Это может быть сделано со следующими директивами конфигурации, помещенными в a
.htaccess
файл в желательном справочнике:
Options +Includes
AddType text/html shtml
AddHandler server-parsed shtml
отметить это
AllowOverride Options
и
AllowOverride FileInfo
должен оба быть в действительности для этих директив, чтобы иметь любой эффект.
пожалуйста см. SSI tutorial поскольку более полное обсуждение стороны сервера включает.
наконец, Вы можете желать использовать a
.htaccess
файл, чтобы разрешить выполнение программ CGI в специфическом справочнике. Это может быть осуществлено со следующей конфигурацией:
Options +ExecCGI
AddHandler cgi-script cgi pl
поочередно, если Вы желаете иметь все файлы в данном справочнике, как полагается, являетесь программами CGI, это может быть сделано со следующей конфигурацией:
Options +ExecCGI
SetHandler cgi-script
отметить это
AllowOverride Options
и
AllowOverride FileInfo
должен оба быть в действительности для этих директив, чтобы иметь любой эффект.
пожалуйста см. CGI tutorial для более полного обсуждения программирования CGI и конфигурации.
когда Вы помещаете директивы конфигурации в a
.htaccess
файл, и Вы не получаете желательный эффект, есть множество вещей, которые могут идти не так, как надо.
обычно, проблема - это
AllowOverride
не установлен такой, что ваши директивы конфигурации удостаиваются чести. Удостоверьтесь, что Вы не имеете a
AllowOverride None
в действительности для рассматриваемых возможностей файла. Хороший тест на это должен вставить мусор ваш
.htaccess
файл и перезаряжает. Если ошибка сервера не произведена, то Вы почти наверняка имеете
AllowOverride None
в действительности.
если, с другой стороны, Вы получаете ошибки сервера, пробуя получить доступ к документам, проверьте вашу Apacheскую ошибочную регистрацию. Это вероятно скажет Вам, что директива использовала в вашем
.htaccess
файл не разрешается. Поочередно, это может сказать Вам, что Вы имели ошибку синтаксиса, которую Вы будете тогда должны установить.