htaccess:禁止所有 pdf 文件,但允许来自 php 脚本(文件下载脚本)
htaccess: disallow all pdf files but allow from php script (file download script)
我写了一个小的下载脚本来隐藏文件路径,文件 "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]
有什么想法吗?
试试这个:
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;
}
?>
在您的 .htaccess 顶部尝试此规则:
RewriteEngine on
RewriteCond %{THE_REQUEST} \.pdf[?\s] [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost [NC]
RewriteRule ^ - [F]
第一步 - htaccess - 我通常使用 FilesMatch 有多种不同的方式:
<FilesMatch "\.pdf$">
Order allow,deny
Deny from all
</FilesMatch>
第二步是在您的 PHP 文件中 - 您只需使用本地路径来加载它并显示它..
/path/to/file.pdf
以下是如何为客户导出它的示例:correct PHP headers for pdf file download
我写了一个小的下载脚本来隐藏文件路径,文件 "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]
有什么想法吗?
试试这个:
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;
}
?>
在您的 .htaccess 顶部尝试此规则:
RewriteEngine on
RewriteCond %{THE_REQUEST} \.pdf[?\s] [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost [NC]
RewriteRule ^ - [F]
第一步 - htaccess - 我通常使用 FilesMatch 有多种不同的方式:
<FilesMatch "\.pdf$">
Order allow,deny
Deny from all
</FilesMatch>
第二步是在您的 PHP 文件中 - 您只需使用本地路径来加载它并显示它.. /path/to/file.pdf 以下是如何为客户导出它的示例:correct PHP headers for pdf file download