我們來看倆段通常對上傳目錄設定無許可權的例子, 配置如下:
程式碼如下:


Order Allow,Deny
Deny from all


這些配置表面上看起來是沒什麼問題的,確實在 windows 下可以這麼說。
但是 linux 就不同了,大家都是知道的 linux 作業系統是區分大小寫的,這裡如果換成大寫字尾名*.phP 一類就 pass 了
這裡我說下我個人的解決方法,程式碼如下:

ErrorDocument 404 /404/404.html
ErrorDocument 403 /404/403.html

// ? 是儘可能多的匹配.php 的字串,i 是不區分大小寫, 然後冒號後面跟上正規表示式,
也可以寫成:
Order allow,deny
Deny from all


上面的意思就是說, 內目錄路徑下所有 php 檔案不區分大小寫,透過 order,allow,deny 原則判斷拒絕執行 php 檔案,對 nginx 同樣也是可應用的
另外一種方法,是設定在 htaccess 裡面的,這個方法比較靈活一點,針對那些沒有 apapche 安全操作許可權的網站管理員:
Apache 環境規則內容如下:Apache 執行 php 指令碼限制 把這些規則新增到.htaccess 檔案中
程式碼如下:
RewriteEngine on RewriteCond % !^$
RewriteRule uploads/(.*).(php)$ – [F]
RewriteRule data/(.*).(php)$ – [F]
RewriteRule templets/(.*).(php)$ –[F]
另外一種方法,程式碼如下:

php_admin_flag engine off

此方法我在 win 系統下面測試失敗了,重新啟動 apapche 出現下面的錯誤資訊:
The Apache service named reported the following error:
>>> Invalid command ‘php_flag’, perhaps misspelled or defined by a module not included in the server configuration.
這裡我就不具體說明這個解決辦法了,因為禁止 php 執行的方法,大家看自己的需求去設定就可以了!
【apache 配置禁止訪問】
1. 禁止訪問某些檔案/目錄
增加 Files 選項來控制,比如要不允許訪問 .inc 副檔名的檔案,保護 php 類庫:

Order allow,deny
Deny from all

禁止訪問某些指定的目錄:(可以用 來進行正則匹配)

Order allow,deny
Deny from all

透過檔案匹配來進行禁止,比如禁止所有針對圖片的訪問:

Order allow,deny
Deny from all

針對 URL 相對路徑的禁止訪問:

Order allow,deny
Deny from all

針對代理方式禁止對某些目標的訪問( 可以用來正則匹配),比如拒絕透過代理訪問 cnn.com:

Order allow,deny
Deny from all

2. 禁止某些 IP 訪問/只允許某些 IP 訪問
如果要控制禁止某些非法 IP 訪問,在 Directory 選項控制:

Order allow,deny
Allow from all
Deny from 10.0.0.1 #阻止一個 IP
Deny from 192.168.0.0/24 #阻止一個 IP 段

只允許某些 IP 訪問,適合比如就允許內部或者合作公司訪問:

Order deny,allow
Deny from all
All from example.com #允許某個域名
All from 10.0.0.1 #允許一個 iP
All from 10.0.0.1 10.0.0.2 #允許多個 iP
Allow from 10.1.0.0/255.255.0.0 #允許一個 IP 段,掩碼對
All from 10.0.1 192.168 #允許一個 IP 段,後面不填寫
All from 192.168.0.0/24 #允許一個 IP 段,網際網路號

Apache:解決辦法;

Options -Indexes FollowSymLinks
AllowOverride All

Order allow,deny
Deny from all