2

さまざまな.phpファイルを含むフォルダーがあり、それらへの直接アクセスを防ぎたいのですが、index.php.

これは私がこれまでに得たものであり、動作しているようです:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond $1 !^(index\.php)
RewriteRule ^(.*)$ /403.php/$1 [R=403]
</IfModule>

これは正しい方法ですか?また、フォルダーにあるファイルの中に 403.php が実際には存在しないことに注意してください。

編集:私がやろうとしていることをより明確にするために-index.phpファイルと、index.phpに含まれる他のさまざまなファイルを含むフォルダー(「includes」という名前を付けることができます)があります。

ユーザー/悪意のあるボット/index.php 以外の「インクルード」に直接アクセスできる人を望んでいません。

ファイルが存在するかどうかに関係なく、他の何かに到達した場合に備えて、ブラウザに 403 - Access Denied HTTP 応答コードを送信したいと考えています。

4

2 に答える 2

2

正しい方法は、Fフラグを使用することです。これは単に 403 禁止を返し、-「何もせず、URI を変更せずに通過させる」ことを意味するターゲットとして使用できます。

RewriteEngine on
RewriteCond $1 !^(index\.php)
RewriteRule ^(.*)$ - [L,F]

または、条件とルールを組み合わせてみることもできます。

RewriteEngine on
RewriteRule !index\.php$ - [L,F]
于 2013-04-06T16:16:09.953 に答える
1

エラーページを作成することもできます。実際、一部のコントロール パネルには、ユーザーが.shtmlファイル拡張子を持つ SSI 対応の 403 (禁止)ページを作成できるアプリケーションがあります。そのアプリのcPanelで。「Advanced」セクションにある「Error Pages」というタイトルが付けられており、403 ページは403.shtmlベース名に保存されます。そのような種類のアプリが見つからない場合は、サーバーがこれを許可するように構成されている場合にのみ、SSI 対応の HTML ファイルを手動で作成できます。それが不可能な場合でも、別の拡張機能を使用できます。

したがって、より正しい方法は、次のように既存のエラー ページを再マップすることです。

RewriteCond %{REQUEST_URI} !^/index\.php
RewriteRule ^(.*) /403.shtml

とにかく、あなたは何をしようとしていますか?

于 2013-04-06T18:39:37.590 に答える