我有点愚蠢的必要,将PDF文件的链接伪装成PHP文件,并以PDF文件名作为参数。
类似的东西:
问题是我设法做了第2点。但是当我尝试做第3点时,它会循环或找不到文件。
我正在考虑使用自定义扩展程序“模拟”另一个文件,以便不循环,但它仍在循环。
我有以下.htaccess:
AddType application/pdf .view
RewriteRule ^(.*)\.pdf$ yyyy.php?filename=$1 [L]
RewriteRule ^(.*)\.view$ $1.pdf [L]
事情就是它循环而我无处可去。
我对.htaccess并不是很好,所以我在哪里做错了?
答案 0 :(得分:0)
您可能需要添加一些内容以防止yyyy.php
的引用者重写返回到php文件。在yyyy.php规则之前添加:
RewriteCond %{HTTP_REFERER} !yyyy\.php
请注意,引用可以伪造,因此这是人们可以绕过yyyy.php文件的一种方式。
答案 1 :(得分:0)
当我检测到.pdf扩展名时,我发现重定向更容易。
所以我基本上这样做了:
header
和readfile
呈现PDF以避免与.htaccess发生冲突。类似的东西:
的.htaccess
RewriteRule ^(.*)\.pdf$ /pdfreader/$1 [L,R=302,NC]
RewriteRule ^pdfreader/(.*)?$ pdfreader.php?file=$1 [L,NC]
pdfreader.php
$file = $_GET["file"].".pdf";
header('Content-type: application/pdf');
header('Content-Disposition: inline; filename="' . $file . '"');
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . filesize($file));
header('Accept-Ranges: bytes');
@readfile($file);