У меня есть немного глупая необходимость скрывать ссылки на файлы PDF в виде файлов PHP с именем файла PDF в качестве параметра.
Что-то вроде:
Дело в том, что мне удалось сделать точку 2. Но когда я пытаюсь сделать точку 3., она либо циклически, либо не находит файл.
Я думал о том, что пользовательское расширение "имитирует" другой файл, чтобы не циклически, но он все еще ездил на велосипеде.
У меня есть следующий.htaccess:
AddType application/pdf .view
RewriteRule ^(.*)\.pdf$ yyyy.php?filename=$1 [L]
RewriteRule ^(.*)\.view$ $1.pdf [L]
Дело в том, что оно циклично, и я никуда не ухожу.
Я не очень хорош с.htaccess, так где я делаю это неправильно?
Мне было проще просто перенаправить, когда я обнаружил расширение.pdf.
Поэтому я в основном сделал это:
header
и readfile
чтобы избежать конфликтов с.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);
Вероятно, вам нужно добавить что-то, чтобы предотвратить yyyy.php
обратно в файл php. Добавьте это перед правилом yyyy.php:
RewriteCond %{HTTP_REFERER} !yyyy\.php
Обратите внимание, что ссылки могут быть подделаны, так что это один из способов, которым люди смогут обойти файл yyyy.php.