目次
動作原理と使用方法
.htaccess ファイルを使用しないでください
コマンドが有効になります
.htaccess をメイン設定ファイルにマージします
认证举例
服务器端包含(SSI)举例
CGI举例
疑难解答
ホームページ バックエンド開発 PHPチュートリアル PHP の .htaccess ファイルを深く理解する_PHP チュートリアル

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

Jul 13, 2016 am 10:34 AM
htaccess ディレクトリ構成

.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 までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

11ベストPHP URLショートナースクリプト(無料およびプレミアム) 11ベストPHP URLショートナースクリプト(無料およびプレミアム) Mar 03, 2025 am 10:49 AM

多くの場合、キーワードと追跡パラメーターで散らかった長いURLは、訪問者を阻止できます。 URL短縮スクリプトはソリューションを提供し、ソーシャルメディアやその他のプラットフォームに最適な簡潔なリンクを作成します。 これらのスクリプトは、個々のWebサイトにとって価値があります

Instagram APIの紹介 Instagram APIの紹介 Mar 02, 2025 am 09:32 AM

2012年のFacebookによる有名な買収に続いて、Instagramはサードパーティの使用のために2セットのAPIを採用しました。これらはInstagramグラフAPIとInstagram Basic Display APIです。

Laravelでフラッシュセッションデータを使用します Laravelでフラッシュセッションデータを使用します Mar 12, 2025 pm 05:08 PM

Laravelは、直感的なフラッシュメソッドを使用して、一時的なセッションデータの処理を簡素化します。これは、アプリケーション内に簡単なメッセージ、アラート、または通知を表示するのに最適です。 データは、デフォルトで次の要求のためにのみ持続します。 $リクエスト -

LaravelのバックエンドでReactアプリを構築する:パート2、React LaravelのバックエンドでReactアプリを構築する:パート2、React Mar 04, 2025 am 09:33 AM

これは、LaravelバックエンドとのReactアプリケーションの構築に関するシリーズの2番目と最終部分です。シリーズの最初の部分では、基本的な製品上場アプリケーションのためにLaravelを使用してRESTFUL APIを作成しました。このチュートリアルでは、開発者になります

Laravelテストでの簡略化されたHTTP応答のモッキング Laravelテストでの簡略化されたHTTP応答のモッキング Mar 12, 2025 pm 05:09 PM

Laravelは簡潔なHTTP応答シミュレーション構文を提供し、HTTP相互作用テストを簡素化します。このアプローチは、テストシミュレーションをより直感的にしながら、コード冗長性を大幅に削減します。 基本的な実装は、さまざまな応答タイプのショートカットを提供します。 Illuminate \ support \ facades \ httpを使用します。 http :: fake([[ 'google.com' => 'hello world'、 'github.com' => ['foo' => 'bar']、 'forge.laravel.com' =>

PHPのカール:REST APIでPHPカール拡張機能を使用する方法 PHPのカール:REST APIでPHPカール拡張機能を使用する方法 Mar 14, 2025 am 11:42 AM

PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

Codecanyonで12の最高のPHPチャットスクリプト Codecanyonで12の最高のPHPチャットスクリプト Mar 13, 2025 pm 12:08 PM

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

2025 PHP状況調査の発表 2025 PHP状況調査の発表 Mar 03, 2025 pm 04:20 PM

2025 PHP Landscape Surveyは、現在のPHP開発動向を調査しています。 開発者や企業に洞察を提供することを目的とした、フレームワークの使用、展開方法、および課題を調査します。 この調査では、現代のPHP Versioの成長が予想されています

See all articles