Php 使用.htaccess隐藏.pdf扩展名以避免循环
我有一点愚蠢的必要将指向PDF文件的链接伪装成带有PDF文件名作为参数的PHP文件 比如: 客户请求xxxx.pdf文件。 服务器接收到请求,但没有返回xxxx.pdf,而是转到yyyy.php或任何扩展名。 php有一个iframe,在其中加载PDF文件。 问题是我设法做到了第二点。但是当我试着做第三点的时候。它要么循环,要么找不到文件 我想用一个自定义扩展名来模拟另一个文件,以便不循环,但它仍在循环 我有以下访问权限:Php 使用.htaccess隐藏.pdf扩展名以避免循环,php,.htaccess,pdf,Php,.htaccess,Pdf,我有一点愚蠢的必要将指向PDF文件的链接伪装成带有PDF文件名作为参数的PHP文件 比如: 客户请求xxxx.pdf文件。 服务器接收到请求,但没有返回xxxx.pdf,而是转到yyyy.php或任何扩展名。 php有一个iframe,在其中加载PDF文件。 问题是我设法做到了第二点。但是当我试着做第三点的时候。它要么循环,要么找不到文件 我想用一个自定义扩展名来模拟另一个文件,以便不循环,但它仍在循环 我有以下访问权限: AddType application/pdf .vie
AddType application/pdf .view
RewriteRule ^(.*)\.pdf$ yyyy.php?filename=$1 [L]
RewriteRule ^(.*)\.view$ $1.pdf [L]
问题是它循环而我一无所获
我不太擅长.htaccess,那么我哪里做错了呢?您可能需要添加一些东西来防止yyyy.php的引用被重写回php文件。在yyyy.php规则之前添加以下内容:
RewriteCond %{HTTP_REFERER} !yyyy\.php
请注意,引用可以伪造,因此这是人们可以绕过yyyy.php文件的一种方法。我发现,在检测到.pdf扩展名时,只重定向更容易 所以我基本上是这样做的: .htaccess检测到PDF扩展名,并重定向到一个php文件,该文件将不带扩展名的文件名作为参数传递。 php文件使用文件名,并使用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);
不适合我,继续骑自行车,我确实找到了一个更简单的解决办法。我打算出版它。