目標是限制瀏覽器直接訪問一個主檔案夾中的所有*.pdf的各個子檔案夾。每個pdf檔案所在的子檔案夾的名稱只能是數字(字符0-9;例如 "work/books/112/myfile.pdf")
到目前為止,我所擁有的是:
RewriteRule ^work/books/([0-9] )/.pdf)$ [F,L,NC]/code>
其中'books'是我的主檔案夾,然后是pdf檔案所在的任何數字檔案夾,有。
這似乎不起作用,而且我也不確定,雖然這個重寫規則阻止了對這些pdf檔案的直接訪問,但我是否仍然能夠通過php讀取pdf檔案?
uj5u.com熱心網友回復:
該規則缺少檔案擴展名(.pdf)之前的檔案名部分,所以正則運算式應該是
^work/books/[0-9] /[^/] .pdf
也不需要捕捉任何部分,這意味著你可以省略所有的括號,在你的例子中是不平衡的,btw.
。
RewriteRule指令的另一部分是替換,在這種情況下可能只是一個破折號。所以把所有的東西放在一起,就變成了
RewriteRule ^work/books/[0-9] /[^/] .pdf$ - [F]
uj5u.com熱心網友回復:
正如@OlafDietsche的回答中所指出的,你沒有匹配請求的URL中的myfile部分,所以該指令永遠不會匹配。
你可以通過使用 Apache <If>運算式和 mod_authz_core 來避免使用 mod_rewrite。例如:
<If "%{REQUEST_URI} =~ m#/work/books/d /[^/] .pdf$#"/span>>
Require all denied
</If>
或者干脆阻止對服務器上所有.pdf檔案的直接訪問:
<Files "*.pdf"/span>>
Require all denied
</Files>
阻止直接訪問這些pdf檔案,我是否還能通過PHP讀取pdf檔案
只要你沒有從PHP中對這些.pdf檔案進行HTTP請求,那么訪問就不會被阻止。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/307566.html
標籤:
