2016-12-28 51 views
0

我們在我們的網站上有一個目錄,./content/,其中包含一堆子目錄,每個子目錄都包含自己的子目錄等等。子目錄中還有很多.PDF文檔,我們需要通過直接訪問example.com/content/myfile.pdf來阻止某人能夠直接訪問。.htaccess拒絕直接訪問所有子目錄和文件,但仍允許從網站內鏈接

我們有整個我們的網站引用的文件,並通過Mozilla的PDF.js庫加載,顯然,我們需要能夠讓我們的PHP/HTML/JS文件能夠訪問它們,但只能從內部我們的域名。

我試圖在我們的域根目錄和內容文件夾中創建一個.htaccess文件來限制訪問,但我仍然能夠直接訪問它們。這裏的.htaccess的內容:

<IfModule mod_rewrite.c> 
    RewriteCond %{HTTP_HOST} ^example\.com$ 
    RewriteRule ^$ https://www.example.com/* [R=301,L] 

    RewriteCond %{HTTP_REFERER} !^http://(www\.)?example\.com/ [NC] 
    RewriteRule ^_content/[^.]+\.(jpe?g|gif|bmp|png|pdf)$ - [F,NC] 
</IfModule> 

在此先感謝。

+0

你或許應該通過PHP服務於它,而不是使用進行了檢測 – Farkie

+0

http://stackoverflow.com/questions/10236717/htaccess-how-to-prevent-a-file-from-direct-url-訪問 – Farkie

+0

我在參考文章中玩過幾個答案,他們不適合我。恐怕我不知道'通過PHP提供服務'是什麼意思? –

回答

0

對Farkie推薦的帖子進行了一些修改,最終爲我工作(對https添加額外的HTTP_REFERER,因爲我們想限制http和https)。

RewriteEngine on 
RewriteCond %{HTTP_REFERER} !^https://(www\.)?example.com/.*$  [NC] 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?example.com/.*$  [NC] 
RewriteRule .*\.(pdf)$ - [F,NC] 
相關問題