ホームページ  >  記事  >  バックエンド開発  >  PHP の .htaccess ファイルを深く理解する_PHP チュートリアル

PHP の .htaccess ファイルを深く理解する_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:34:08720ブラウズ

.htaccess ファイルは、各ディレクトリの構成を変更するメソッドを提供します。

動作原理と使用方法

.htaccess ファイル (または「分散構成ファイル」) は、各ディレクトリの構成を変更する方法を提供します。つまり、命令を含むファイルを特定のディレクトリに配置し、そのファイル内の命令がこのディレクトリとそのすべてのサブディレクトリに作用します。

.htaccess 以外のファイル名を使用する必要がある場合は、AccessFileName コマンドを使用して変更できます。たとえば、.config を使用する必要がある場合は、サーバー構成ファイルで次のように構成できます: AccessFileName .config

通常、.htaccess ファイルはメイン構成ファイルと同じ構成構文を使用します。 AllowOverride ディレクティブは、.htaccess ファイル内のどのディレクティブがカテゴリごとに有効であるかを決定します。ディレクティブが .htaccess で許可されている場合、このマニュアルの説明では、ディレクティブには、ディレクティブを有効にするためにAllowOverride ディレクティブに設定する必要がある値を説明するオーバーライド セクションが含まれます。

.htaccess ファイルを使用しないでください

一般に、メイン設定ファイルにアクセスできない場合を除き、.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 をメイン設定ファイルにマージします

構成セクション (コンテナー) で説明したように、.htaccess ファイルは セクション内の対応するディレクトリの設定をオーバーライドできますが、メイン構成ファイルの他のタイプの構成セクションによってもオーバーライドされます。この機能を使用すると、AllowOverride が有効になっている場合でも、特定の構成を強制できます。たとえば、.htaccess でのスクリプトの実行を強制的に禁止するが、他の状況は制限しないようにするには、次のようにします:

<Directory />
Allowoverride All
</Directory>
<Location />
Options +IncludesNoExec -ExecCGI
</Location>

认证举例

如果你只是为了知道如何认证,而直接从这里开始看的,有很重要的一点需要注意,有一种常见的误解,认为实现密码认证必须要使用.htaccess文件,其实是不正确的。把认证指令放在主配置文件的段中是一个更好的方法,而.htaccess文件应该仅仅用于无权访问主配置文件的时候。参见上述关于何时应该与何时不应该使用.htaccess文件的讨论。

有此声明在先,如果你仍然需要使用.htaccess文件,请继续看以下说明。.htaccess文件的内容:

AuthType Basic
AuthName "Password Required"
AuthUserFile /www/passwords/password.file
AuthGroupFile /www/passwords/group.file
Require Group admins

必须设置 AllowOverride AuthConfig 以允许这些指令生效。

服务器端包含(SSI)举例

.htaccess文件的另一个常见用途是允许一个特定的目录使用服务器端包含(SSI),可以在需要的目录中放置.htaccess文件,并作如下配置:

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

注意,必须同时设置 AllowOverride Options 和 AllowOverride FileInfo 以使这些指令生效。

CGI举例

可以通过.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文件中哪些指令是不允许使用的,也可能会发现需要纠正的语法错误。

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/752346.htmlTechArticle.htaccess文件提供了针对每个目录改变配置的方法。 工作原理和使用方法 .htaccess文件(或者"分布式配置文件")提供了针对每个目录改变配置的...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。