.htaccess ファイルは、各ディレクトリの構成を変更するメソッドを提供します。
.htaccess ファイル (または「分散構成ファイル」) は、各ディレクトリの構成を変更する方法を提供します。つまり、命令を含むファイルを特定のディレクトリに配置し、そのファイル内の命令がこのディレクトリとそのすべてのサブディレクトリに作用します。
.htaccess 以外のファイル名を使用する必要がある場合は、AccessFileName コマンドを使用して変更できます。たとえば、.config を使用する必要がある場合は、サーバー構成ファイルで次のように構成できます: AccessFileName .config
通常、.htaccess ファイルはメイン構成ファイルと同じ構成構文を使用します。 AllowOverride ディレクティブは、.htaccess ファイル内のどのディレクティブがカテゴリごとに有効であるかを決定します。ディレクティブが .htaccess で許可されている場合、このマニュアルの説明では、ディレクティブには、ディレクティブを有効にするためにAllowOverride ディレクティブに設定する必要がある値を説明するオーバーライド セクションが含まれます。
一般に、メイン設定ファイルにアクセスできない場合を除き、.htaccess ファイルは使用しないでください。ユーザー認証は .htaccess ファイルを通じてのみ実現できるという誤解がよくありますが、実際にはそうではなく、ユーザー認証をメイン構成ファイルに記述するのが適切な方法です。
.htaccess ファイルは、コンテンツプロバイダーが root 権限なしで特定のディレクトリのサーバー構成を変更する必要がある状況で使用する必要があります。サーバー管理者が構成を頻繁に変更したくない場合、特に ISP が同じマシン上で複数のユーザー サイトを実行しており、ユーザーが自分で構成を変更できることを望んでいる場合は、.htaccess ファイルを使用してユーザー自身が構成を変更できるようにすることができます。 。
ただし、一般的には .htaccess ファイルの使用はできるだけ避ける必要があります。 .htaccess ファイルに配置したい設定は、メイン設定ファイルの
.htaccess ファイルの使用は主に 2 つの理由から避けてください。
まずはパフォーマンスです。 AllowOverride で .htaccess ファイルが有効になっている場合、Apache はすべてのディレクトリで .htaccess ファイルを探す必要があるため、.htaccess を有効にすると、実際に使用されているかどうかに関係なく、パフォーマンスが低下します。さらに、リクエストごとに .htaccess ファイルを 1 回読み取る必要があります。
また、Apache は、すべての有効なディレクティブが機能するために、すべての親ディレクトリで .htaccess ファイルを探す必要があります (有効なディレクティブを参照)。したがって、/www/htdocs/example 内のページがリクエストされた場合、Apache は次のファイルを探す必要があります:
リーリーどれも存在しないにもかかわらず、合計 4 つの追加ファイルがアクセスされます。 (まれですが、これは単にルート ディレクトリ "/" で .htaccess の使用を許可していることが原因である可能性があることに注意してください。)
2番目は安全です。これにより、ユーザーがサーバー構成を自分で変更できるようになり、予期しない変更が行われる可能性があるため、ユーザーにそのような権限を与えるべきかどうかを慎重に検討してください。ただし、ユーザーのニーズを満たすよりも低い権限を与えると、追加のテクニカル サポート リクエストが発生することになるため、ユーザーに与えられた権限を明確に通知し、AllowOverride 設定の値を説明し、参照するようにガイドする必要があります。今後の多大なるトラブルを避けるため、ご説明させていただきます。
/www/htdocs/example ディレクトリの .htaccess ファイルに命令を配置することは、メイン設定ファイルの
設定をメイン設定ファイルに入れると、ファイルがリクエストされるたびに読み取られるのではなく、Apache の起動時に 1 回読み取られるだけで済むため、より効率的です。
.htaccess ファイル内の設定ディレクティブは、.htaccess ファイルが配置されているディレクトリとそのすべてのサブディレクトリに適用されますが、その上位レベルのディレクトリにも .htaccess ファイルが存在する可能性があることに注意することが重要です。有効なのは検索順であるため、特定のディレクトリ内の .htaccess ファイル内のディレクティブは、その親ディレクトリ内の .htaccess ファイル内のディレクティブをオーバーライドする可能性があります。つまり、サブディレクトリ内のディレクティブは、親ディレクトリ内のディレクティブをオーバーライドします。またはメイン設定ファイル。
例: /www/htdocs/example1 ディレクトリの .htaccess ファイルには次の内容が含まれています: Options +ExecCGI
(注: .htaccess での「Options」ディレクティブの使用を許可するには、「AllowOverride Options」を設定する必要があります)
/www/htdocs/example1/example2 ディレクトリ内の .htaccess ファイルには、次の内容が含まれています: オプションに含まれるもの
2 番目の .htaccess ファイルが存在するため、/www/htdocs/example1/example2 での CGI の実行は許可されませんが、以前の設定を完全にオーバーライドするオプション インクルードのみが許可されます。
構成セクション (コンテナー) で説明したように、.htaccess ファイルは
<Directory /> Allowoverride All </Directory> <Location /> Options +IncludesNoExec -ExecCGI </Location>
如果你只是为了知道如何认证,而直接从这里开始看的,有很重要的一点需要注意,有一种常见的误解,认为实现密码认证必须要使用.htaccess文件,其实是不正确的。把认证指令放在主配置文件的
有此声明在先,如果你仍然需要使用.htaccess文件,请继续看以下说明。.htaccess文件的内容:
AuthType Basic AuthName "Password Required" AuthUserFile /www/passwords/password.file AuthGroupFile /www/passwords/group.file Require Group admins
必须设置 AllowOverride AuthConfig 以允许这些指令生效。
.htaccess文件的另一个常见用途是允许一个特定的目录使用服务器端包含(SSI),可以在需要的目录中放置.htaccess文件,并作如下配置:
Options +Includes AddType text/html shtml AddHandler server-parsed shtml
注意,必须同时设置 AllowOverride Options 和 AllowOverride FileInfo 以使这些指令生效。
可以通过.htaccess文件允许在特定的目录中执行CGI程序,需要作如下配置:
Options +ExecCGI AddHandler cgi-script cgi pl
另外,如下配置可以使给定目录下的所有文件被视为CGI程序:
Options +ExecCGI SetHandler cgi-script
注意,必须同时设置 AllowOverride Options 和 AllowOverride FileInfo 以使这些指令生效。
如果在.htaccess文件中的某些指令不起作用,可能有多种原因。
最常见的原因是AllowOverride指令没有被正确设置,必须确保没有对此文件区域设置 AllowOverride None 。有一个很好的测试方法,就是在.htaccess文件随便增加点无意义的垃圾内容,如果服务器没有返回了一个错误消息,那么几乎可以断定设置了 AllowOverride None 。
在访问文档时,如果收到服务器的出错消息,应该检查Apache的错误日志,可以知道.htaccess文件中哪些指令是不允许使用的,也可能会发现需要纠正的语法错误。