<-
Apache > HTTP Server > Documentation > Version 2.0 > How-To / Tutorials

Apache Обучающая программа: файлы .htaccess

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

top

.htaccess files

top

What they are/How to use them

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

отметить:

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

AccessFileName .config

вообще, .htaccess файлы используют тот же самый синтаксис как main configuration files . то, что Вы можете вставить эти файлы, определено AllowOverride директива. Эта директива определяет, в категориях, какие директивы удостоятся чести, если они будут найдены в a .htaccess файл. Если директива разрешается в a .htaccess файл, документация для той директивы будет содержать Отвергающуюся секцию, определяя, в каком должна быть ценность AllowOverride для той директивы, которая будет разрешена.

например, если Вы смотрите на документацию для AddDefaultCharset директива, Вы найдете, что в этом разрешает .htaccess файлы. (См. линию Контекста в направляющем резюме.) Override линия читает FileInfo . таким образом, Вы должны иметь по крайней мере AllowOverride FileInfo для этой директивы, чтобы удостоиться чести в .htaccess файлы.

Example:

Context: server config, virtual host, directory, .htaccess
Override: FileInfo

если Вы неуверены, разрешается ли специфическая директива в a .htaccess файл, смотрите на документацию для той директивы, и проверяйте линию Контекста для ".htaccess".

top

When (not) to use .htaccess files

вообще, Вы никогда не должны использовать .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 :

Contents of .htaccess file in /www/htdocs/example

AddType text/example .exm

Section from your httpd.conf file

<Directory /www/htdocs/example>
AddType text/example .exm
</Directory>

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

использование .htaccess файлы могут быть инвалидами полностью, устанавливая AllowOverride директива к none :

AllowOverride None

top

How directives are applied

директивы конфигурации, найденные в 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 является в действительности, который полностью отвергает любое более раннее урегулирование, которое, возможно, было в месте.

Merging of .htaccess with the main configuration files

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

<Directory />
Allowoverride All
</Directory>

<Location />
Options +IncludesNoExec -ExecCGI
</Location>

top

Authentication example

если Вы подскочили непосредственно к этой части документа, чтобы узнать, как сделать установление подлинности, важно отметить одну вещь. Есть общее неправильное представление, которое Вы обязаны использовать .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 для более полного обсуждения установления подлинности и разрешения.

top

Server Side Includes example

другое общее использование .htaccess файлы должны позволить Сторону Сервера, Включает для специфического справочника. Это может быть сделано со следующими директивами конфигурации, помещенными в a .htaccess файл в желательном справочнике:

Options +Includes
AddType text/html shtml
AddHandler server-parsed shtml

отметить это AllowOverride Options и AllowOverride FileInfo должен оба быть в действительности для этих директив, чтобы иметь любой эффект.

пожалуйста см. SSI tutorial поскольку более полное обсуждение стороны сервера включает.

top

CGI example

наконец, Вы можете желать использовать a .htaccess файл, чтобы разрешить выполнение программ CGI в специфическом справочнике. Это может быть осуществлено со следующей конфигурацией:

Options +ExecCGI
AddHandler cgi-script cgi pl

поочередно, если Вы желаете иметь все файлы в данном справочнике, как полагается, являетесь программами CGI, это может быть сделано со следующей конфигурацией:

Options +ExecCGI
SetHandler cgi-script

отметить это AllowOverride Options и AllowOverride FileInfo должен оба быть в действительности для этих директив, чтобы иметь любой эффект.

пожалуйста см. CGI tutorial для более полного обсуждения программирования CGI и конфигурации.

top

Troubleshooting

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

обычно, проблема - это AllowOverride не установлен такой, что ваши директивы конфигурации удостаиваются чести. Удостоверьтесь, что Вы не имеете a AllowOverride None в действительности для рассматриваемых возможностей файла. Хороший тест на это должен вставить мусор ваш .htaccess файл и перезаряжает. Если ошибка сервера не произведена, то Вы почти наверняка имеете AllowOverride None в действительности.

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