2015-11-20 109 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

相關問題