これらのルールをサイト ルートの htaccess ファイルに追加できます。
# check if the request is for the images folder
RewriteCond %{REQUEST_URI} ^/images/
# check that it isn't a request for an image
RewriteCond %{REQUEST_URI} !\.(jpe?g|png|gif|bmp)$ [NC]
# check that it isn't a request for the 2 ok php files
RewriteCond %{REQUEST_URI} !^/images/(gradient|rgba)\.php$
# forbid access
RewriteRule ^ - [L,F]
これにより、/images/そのリクエストが jpg/jpeg/png/gif/bmp (または正規表現に追加したい他の拡張子) で終わらない、gradient.phpまたはそうでない場合rgba.php、403 禁止になります。
編集:
私はそれらが禁止されるのではなく、実行されないようにしたいだけです – これはアップロード フォルダーなので、誰かが私が検出していない密かに PHP コードである JPG をアップロードした場合、それが検出されないことを基本的に望んでいます。走る
jpg やその他の画像が ( 経由でAddType image/jpeg .jpg) 正しい MIME/タイプにマップされている限り、それは php ハンドラに渡されず、そこにあるコードは実行されません。デフォルトのハンドラーを使用してすべてのファイルを提供する場合AddHandler default-handler phpは、images ディレクトリの htaccess ファイルに設定する必要があります。次に、グラデーション ファイルと rgba ファイルを別のディレクトリに移動する必要があります。htaccess ファイルからハンドラーを選択的に設定することはできませんが、<Location>ブロックを使用して vhost 構成でハンドラーを設定できる場合があります。
編集2:
私は間違っていました。Hフラグを使用して、ルールを使用してカスタム ハンドラーを設定できます。したがって、上記のルールでは、 の代わりに[L,F]、[L,H=default-handler]画像ではないもの、またはgradient.phpデフォルトrgba.phpハンドラに送信されるものはすべて、デフォルト ハンドラに送信されるようにすることができます (たとえば、php ファイルはそのまま送信され、mod_php によって処理および実行されません)。 .
したがって、次のことができます。
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/images/(gradient|rgba)\.php$
RewriteRule ^ - [L,H=default-handler]