2015-11-20 3 views
2

Я написал небольшой сценарий загрузки, чтобы скрыть путь к файлу, файл «get_file.php» обрабатывает все. Следующим шагом я хотел бы запретить использование htaccess всех pdf-файлов из прямого доступа через браузер (если кто-то знает точный URL-адрес файла), но все же предоставляет доступ к файлу с моим «get_file.php».htaccess: запретить все файлы в формате PDF, но разрешить сценарий php (скрипт загрузки файла)

Я пробовал:

RewriteEngine on 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost [NC] 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost.*$ [NC] 
RewriteRule \.(pdf)$ - [F] 

какие-нибудь идеи?

ответ

4

Попробуйте это правило в верхней части .htaccess:

RewriteEngine on 

RewriteCond %{THE_REQUEST} \.pdf[?\s] [NC] 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost [NC] 
RewriteRule^- [F] 
+1

избил меня. Я получил аналогичный ответ, но все очистил, когда увидел ваш ответ – starkeen

2

Просто попробуйте это:

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> 

второй шаг в файле PHP - вы должны просто использовать локальный путь, чтобы загрузить его и отобразить его .. /path/to/file.pdf Вот примеры, как экспортировать для клиентов: correct PHP headers for pdf file download

 Смежные вопросы

  • Нет связанных вопросов^_^