同じISPでホストされているサイトが4つあります。サイトは何度も変更され、現在、いくつかの。htaccessファイルがあります。そのうちの1つはメインルートにあります。他の場所はさまざまな場所に広がっています。たとえば、すべてのURLのルートにも表示されます。
それをよりよく説明するために、1つのサイトAと2番目のBを呼び出します。したがって、。htaccessファイルがあります。
これらのファイルは、ルートまたはpublic.htmlでonlyでなければならないことを前提としています。私は正しいですか?
単一の「アクティブな」.htaccess
ファイルはありません-それよりも少し複雑です。サーバーがどのように構成されているか、またはこれらの.htaccess
ファイルに実際に何が含まれているかを知らなくても、それらがすべて「アクティブ」であると想定することができます。それらはすべて一緒に動作します。
.htaccess
ファイルはApache ディレクトリごと構成ファイルです。 .htaccess
ファイルがあるディレクトリと、その下のディレクトリツリー全体に影響します。サーバーの許可により、ファイルシステムパス(URLのマッピング先)に沿ったすべての.htaccess
ファイルが処理され、親ディレクトリから始まり、サブディレクトリにドリルダウンされます。したがって、あなたの例では、「ルート」の.htaccess
ファイルは、Aの.htaccess
ディレクトリ内のpublic_html
ファイルの前に処理されます-Aのpublic_html
ディレクトリの下のファイルが要求された。
ただし、構成ファイル間で異なるモジュールが個別に処理されます。これは、単一の.htaccess
ファイル内でディレクティブが表示される順序とは限りません。また、ディレクティブが親/子.htaccess
ファイル間でどのように「継承」されるかはモジュールに依存します(特にmod_rewriteはこの点に関して独自のルールを持っています)。
これらのファイルはpublic.htmlのルートにのみ存在する必要があると思います。私は正しいですか?
これは理想的です。メンテナンスが容易です。ただし、前述のように、それらはどこでも発生する可能性があります。何をしているのかにもよりますが、ルートの共通の.htaccess
ファイルにすべてのディレクティブを含めることは望ましくありません。しかし、ディレクティブをファイルシステム全体にarbitrarily意的に分散させることもできません。
サーバー構成にアクセスできる場合、すべての.htaccess
ファイルを単一の構成(<VirtualHost>
コンテナー内)に統合することができます。おそらく、その中に複数の<Directory>
コンテナーがあります。
いいえ、.htaccessファイルはサイトのどこにでも置くことができます。
。htaccessファイル(または「分散構成ファイル」)は、ディレクトリごとに構成変更を行う方法を提供します。 1つまたは複数の構成ディレクティブを含むファイルが特定のドキュメントディレクトリに配置され、ディレクティブがそのディレクトリとそのすべてのサブディレクトリに適用されます。 (私の強調)
私はスティーブに同意します、彼が指摘したことは正しいです。 .htaccessファイルは、配置されるディレクトリに影響を与えます。サブディレクトリに追加の.htaccessがある場合、サブディレクトリ内のファイルは、同じディレクトリ内ではなく、同じディレクトリ内の.htaccessファイルを継承すると述べました。親ディレクトリ。
スティーブの答えで述べたように
.htaccessファイル(または「分散構成ファイル」)は、ディレクトリごとに構成を変更する方法を提供します。 1つ以上の構成ディレクティブを含むファイルは特定のドキュメントディレクトリに配置され、ディレクティブはそのディレクトリとそのすべてのサブディレクトリに適用されます。
だからあなたの質問に答えるためにあなたの例をそのまま取って
- Root // .htaccess in root will impact all files and sub-directories
|
|-- A
|- .htaccess // Since A has its .htaccess all files and sub-directories in A will inherit from this .htaccess file
|
|-- B // If B does not have .htaccess it will inherit from the Root directory which has one.
お役に立てれば !!