Я написал небольшой скрипт загрузки, чтобы скрыть путь к файлу, файл «get_file.php» обрабатывает все.
Следующим шагом я хотел бы запретить с помощью htaccess все pdf-файлы из прямого доступа через браузер (если кто-либо знает точный URL-адрес файла), но все же предоставить доступ к файлу с помощью моего «get_file.php».
Я старался:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost.*$ [NC]
RewriteRule \.(pdf)$ - [F]
есть идеи?
Попробуйте это правило в верхней части вашего .htaccess:
RewriteEngine on
RewriteCond %{THE_REQUEST} \.pdf[?\s] [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost [NC]
RewriteRule ^ - [F]
Просто попробуйте это:
get_file.php
<?php
// You can add extra codes to get your pdf file name here
$file = 'file.pdf';
if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($file).'"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
readfile($file);
exit;
}
?>
1-й шаг — htaccess — я обычно использую FilesMatch разными способами:
<FilesMatch "\.pdf$">
Order allow,deny
Deny from all
</FilesMatch>
2-й шаг в вашем PHP-файле — вам нужно просто использовать локальный путь для его загрузки и отображения.
/path/to/file.pdf
Вот примеры, как экспортировать это для клиентов: правильные заголовки PHP для загрузки pdf файла