少なくとも、/public_html/docs ディレクトリ内にある .htaccess ファイルを使用してディレクトリ リストを無効にします。
IndexIgnore *
おそらく、より安全な方法は、docs ディレクトリを public_html ディレクトリの外に移動することです。次に、www.site.com/serve_doc.php?name=xxxx.pdf などの変数を渡すことでドキュメントを提供できる PHP スクリプトを使用します。
これを実現するためのコードを次に示します。
// get the file name
$file = $_GET['name'];
$dir = "/home/xxxx/docs/";
$fp = fopen($dir.$file, 'rb');
if(!$fp) { exit; }
// open the file
$finfo = finfo_open();
$filetype = finfo_file($finfo, $file, FILEINFO_MIME);
finfo_close($finfo);
$filename = $file;
// send the right headers
header("Cache-Control: ");// leave blank to avoid IE errors
header("Pragma: ");// leave blank to avoid IE errors
header("Content-Type: " .$filetype );
header('Content-Disposition: attachment; filename="'.$filename.'"');
header("Content-Length: " . filesize($dir.$file));
// dump the file and stop the script
fpassthru($fp);
exit();
もちろん、認証を追加して、ユーザーがこの PHP スクリプトを呼び出せるかどうかを検証する必要があります。is_user_logged_in
考えられる 1 つの方法は、ファイルを提供する前に、そのスクリプトでWordpress 関数を呼び出すことです。