コメントで述べたように、最も安全な方法は、コンテンツまたはディレクトリをWebサーバーのパブリックドキュメントルートの外部に配置することです。.htaccess
これにより、.htaccessファイルが削除された場合や、サーバーでオーバーライドが許可されていない場合でも、コンテンツが提供されなくなります。
$_SERVER['DOCUMENT_ROOT']
ドキュメントルートを決定するには、PHP変数をエコーするだけです。したがって、ルートが/var/www/html
の場合、フォルダを作成でき、/var/www/protected_folder
Apache(または他のWebサーバー)はそのフォルダを提供しません(http.confファイルがドキュメントルートフォルダを変更するように変更されていない限り)。
フォルダがドキュメントルートにある必要がある場合は、.htaccess
ファイルを使用してリダイレクトするかDENY
、リダイレクトすることをお勧めします。
TerryEが述べたように、OSレベルのファイル権限を使用して、Apacheユーザーによるフォルダーへのアクセスを拒否することもできます(たとえば、別のユーザーを所有者として設定し、フォルダーの権限をに設定します700
)。フォルダにアクセスしようとすると、表示したくない403 Forbidden Errorが表示されます(http.conf
またはでカスタム403エラーハンドラを設定できますhtaccess
)。特に何をしようとしているのかによっては、このアプローチが必要になる場合があります。これにより、スクリプト(つまり、PHP)からのアクセスを防ぐこともできます。include()
など)必要に応じて、PHPはデフォルトでWebサーバーユーザーの下で実行されます。このアプローチの主な欠点は、移行中にファイルのアクセス許可が保持されないことが多く(正しく行われていない場合)、再帰フラグを使用して親フォルダーのアクセス許可を変更すると、ファイルのアクセス許可が誤ってリセットされることがあることです(誰かが誤って行う可能性は低いですが)フォルダをドキュメントルートに移動します)。