PHPファイルへのリクエストをブロックして404.phpファイルを表示するために、私の.htaccessファイルに次のコードがあります。サブディレクトリにあるPHPファイルを書き換えます
RewriteCond %{REQUEST_URI} !(index|backup).php
RewriteCond %{REQUEST_URI} !^\/(dir1|dir1)\/
RewriteCond %{REQUEST_URI} !404.php
RewriteCond %{REQUEST_URI} .*\.php
RewriteRule .* 404.php [L]
index.phpを、backup.phpを除くすべてのPHPファイルとDIR1とDIR2内のファイルにこのブロックを要求。これは、ルートのリクエストのために働く:
http://www.example.com/some-file.php
http://www.example.com/another-file.php
しかし、それはサブディレクトリ内のファイルでは動作しません:
http://www.example.com/sub/some-file.php
http://www.example.com/sub/another-file.php
私はサブディレクトリ「サブ」は実際にはないことを言うべき存在する。リクエストはサイト内の穴を探している自動スキャナーから来ています。このファイルはデータベースまたはアプリケーションのいずれもロードしないので、404.phpへのリクエストを書き換えています。私がこれをしないと、代わりに完全なアプリケーション404がロードされ、MySQLをクラッシュさせ続けるため、毎分100回これらの要求が1日に数回発生します。
私の質問は、サブディレクトリで動作するようにコードを変更する方法です。 REQUEST_URIに完全サブディレクトリが含まれていると思ったので、コードはそのまま動作するはずです。あなたは、ちょうどsub
へのアクセスを拒否し、別のRewriteRuleを持っているあなたの他のルールの前にこれを入れて、それだけで403要求し、処理を停止することができ
これは実際には存在しないため動作しません。自動化された不正利用スキャナによってリクエストされています。ブロックする特定のディレクトリのリストがありません。サーバー上の唯一の有効なPHPファイルはindex.phpであり、このルールを使用すると許可されているため、すべての.phpファイルをブロックすることは問題ではありません。 –