6

bluehost でホストされている Web サイトのサブディレクトリに drupal をインストールしようとしています...

それは大きな痛みです

.htaccess の次の行が問題だと思います。現在、mysite.com/subdir/install.php に移動すると、403 エラーが発生します。ただし、以下の行から「拒否」を削除すると、そのエラーが発生しなくなるため、この行がすべての問題を引き起こしていると思われます。

私の質問は、誰かが次のコードで何が起こっているのかを理解するのを手伝ってくれますか? 特に、コンポーネントごとに分類できる場合。

<FilesMatch "\.(engine|inc|info|install|make|module|profile|test|po|sh|.*sql|theme|tpl(\.php)?|xtmpl)(|~|\.sw[op]|\.bak|\.orig|\.save)?$|^(\..*|Entries.*|Repository|Root|Tag|Template)$|^#.*#$|\.php(~|\.sw[op]|\.bak|\.orig\.save)$">
      Order allow,deny
    </FilesMatch>
4

1 に答える 1

7

FilesMatch正規表現を使用してファイルを照合できます。

上記FilesMatchでは、4 セットの正規表現があり、1 セットにはセカンダリ オプション セットがあります。

基本的には、正規表現のセットで記述されている見つかったファイルへのアクセスを禁止しています (エラー 403)。

例えば:

\.(engine|inc ...)$|

ファイルが .engine または .inc または ... で終わる場合、ルールの残りの部分へのアクセスを拒否することを意味します。

次に、ルールの最初のセットの最後に|、上記の例のようにこれを表します。ORつまり、最初のルール セットが一致しなかった場合、2 番目のルール セットが開始されますが、これはわずかに異なります。

^(\..*|Entries.*|Repository)$

ここでは反対のことを行います。ファイルが特定のキーワードで開始および終了する場合に一致します。たとえば、次のようになります。

ファイルが で始まり、その後.に何かが続く場合、( .*) は他の何かを意味します。.htaccessEntries

次に、次のルール、これはファイルが文字どおりに扱われるよう^#.*#$に a で始まり a で終わることを意味します##

そして、最後の一連のルールは、ファイルが指定された拡張子で終わっているかどうかを最初に確認するのと同じことを行います。

詳細を知りたい場合は、Perl 互換正規表現 (PCRE)について学習することをお勧めします。

于 2013-09-07T18:25:41.000 に答える