38

別のhtaccessファイルのルールを.htaccessに含めることはできますか?

.htaccess

RewriteEngine On
RewriteCond ...
RewriteRule ...

Include .htaccess1
.
.
Include .htaccess2

これを行うと500になります。ここに含めることは許可されていませんこれを行う方法はありますか?私はこれをかなりひどく必要としているからです。

4

4 に答える 4

54

htaccessファイルの他のファイルのルール、ステートメント、定義、またはディレクティブを含めることはできません。ディレクティブはIncludehtaccessファイル内では使用できません。htaccessファイルのポイントの一部は、<Directory>ブロックと同様に機能しますが、自己完結型であり、ディレクトリ自体の外部にあるものにアクセスすることはできません(サブディレクトリは問題ありません)が、より具体的には、ドキュメントルートの外部には何もありません。このように、悪意のあることをしている人は、htaccessファイルをハッキングすることによって、リクエストをポイントしたり、他のディレクトリからのファイル/コンテンツを含めたりすることができなくなります。

特にmod_rewriteのスコープには、親ディレクトリのhtaccessファイルからリライトルールを継承RewriteOptionsできるオプションがありますが、どこからでもルールを任意に含めることはできません。

于 2012-11-30T07:32:34.673 に答える
5

これは少し遅れるかもしれませんが、代わりにIP禁止、または同様のタイプの動的ルールコンテンツを実装しようとしている場合は、.htaccessファイルの最後のルールを使用して、リクエストを単一の.phpなどに向けてください。この機能を実行する言語化されたスクリプト(単一のスクリプトで動的ルールを独自の形式でロードし、実際に実行しようとしていることに応じてApacheと同じ決定を行うことができます)、要求されている実際のページに要求を渡します。リクエスト処理全体にレイヤーを追加しますが、サーバーの直接ルールを生成したり、Apacheに決定を行わせたりすることなく、すべてのページに同じ動的機能を提供します。

似たようなものを探しているこの投稿に出くわす可能性のある他の人のために、この考えを追加すると思いました。

于 2014-05-25T12:48:27.797 に答える
3

それは可能です-2〜3ステップで...

  1. 拒否するIPのファイルを作成します。.phpファイル、.txtファイル、さらには.csvファイルの場合もあります。

  2. 「.htaccess」という名前のファイルを出力することを目的とした.php(または選択した言語)スクリプトを作成します。

  3. IPのファイルをDenyに更新するたびに、前述の2).phpスクリプトを実行し、新しい.htaccessを各ドメインに出力します。

拒否するIPに加えてステートメントがある場合は、それらを.phpスクリプトにハードコーディングして、最初に出力します。https://www.askapache.com/htaccess/を参照してください

.phpスクリプトは、一般的に次のようになります。

$output = "statement1".PHP_EOL;
$output .= "statement2".PHP_EOL;
$output .= "statement3".PHP_EOL;
...

次に、DENY部分の準備ができたら:

$denyList = file_get_contents("the/list/of/IPs.txt"); // or .php etc.
$ArrayDenyList = explode(PHP_EOL,$denyList); // or your line ending character, if necessary
foreach($ArrayDenyList as $key =>$value) {
$output .= 'Deny from '.$value.PHP_EOL;
  }

次に、ファイルを書き込みます:(おそらく標準的な方法があります):

$handle = fopen(.htaccess,"w"); //complete path if in another domain
fwrite($handle,$output);
fclose($handle);
echo "Success - <p>";

複数のドメインがある場合は、それらのドメイン名のパスの配列を作成し、その配列をforeachして、各パスにfwriteします。

一部のドメインにすでに.htaccess要件がある場合は、それを読み取り可能な.txtファイルに入れます... file_get_contents(on that)、 "output =" that、add "Deny's、then"output。=... " 「foreach()」ループ。

とにかく...あなたは前にこれらすべてのことをしました...このシナリオにそれぞれのテクニックを適用するだけです。

.htaccessファイルは他のファイルを「include()」できませんが、.phpスクリプトはできます。また、.phpスクリプトは、スクリプトで作成できる「.htaccess」という名前のファイルを出力できます。

上記の方法は機能し、製品のカタログごとに「RewriteRule」の行を作成する必要があるときに開始しました。新しい製品を追加するたびに、製品のSQLテーブルから作成された新しい.htaccessファイルを出力するスクリプトを実行します。私のsitemap.xmlを「fwrite」する私の.phpスクリプトに似ています。

(この入力で.php句読点や「$」が失われないことを願っています。)

于 2017-11-26T23:44:06.667 に答える
-5

PHP ".htaccess.php"のようなサーバー側スクリプトを作成し、インクルードを内部に配置できます。もちろん、Apacheを設定する必要があります:AccessFileName .htaccess.php

于 2015-10-31T12:36:44.757 に答える