アップロードされたファイルのフォルダーがあり、その中にサブディレクトリが必要であり、保護されたディレクトリになり、そのファイルの 1 つが呼び出されるたびにユーザーのアクセス許可を確認します。.htaccess は、url を維持しながら、uploaded_files ディレクトリ内の index.php ファイルを呼び出します。これにより、index.php はデータベースに対してファイルをチェックし、ログインしているユーザーがファイルへのアクセス許可を持っているかどうかを確認できます。 index.php はファイルを提供し、ユーザーは許可チェックについて何も知りません。
アップロードされたファイルディレクトリ自体の.htaccessで次のコードを使用して、開発サーバーで実際にこれを機能させました。
RewriteEngine on
RewriteRule ^protected($|/) - [F]
ErrorDocument 404 /uploaded_files/index.php
ErrorDocument 403 /uploaded_files/index.php
ErrorDocument 405 /uploaded_files/index.php
しかし、ライブ サーバーでは、何かが原因でこれらの php ヘッダーが無視されます。
header('Content-Type: some/mime');
および/または
header('Content-Disposition: attachment; filename="somefile.txt"');
RewriteRule の強制 403 ではないかと思いますが、URL が変更されず、index.php が $_SERVER['REQUEST_URI'] を取得できるようにそれを使用しています。
また、index.php を介して 404 を送信しています。