萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 網路程式設計 >> PHP 程式設計

Apache 伺服器配置全攻略 (六):Limit 指令、DirectoryIndex、AccessFileName、Files 存取控制

Limit 指令:針對 HTTP 方法限制存取

<Limit GET POST HEAD>
    Order allow,deny
    Allow from all
</Limit>
<Limit PUT DELETE PATCH>
    Order deny,allow
    Deny from all
</Limit>
  • 針對特定 HTTP 方法 (GET/POST/HEAD/PUT/DELETE 等) 設定存取規則
  • 建議:僅開放 GET、POST、HEAD,封鎖其他方法降低攻擊面
  • 內部可用 Order、Allow、Deny 針對 IP/網域限制
  • 域名比對:從後向前 (如 allow from .example.com 符合 sub.example.com)
  • IP 比對:從前向後 (如 allow from 192.168 符合 192.168.x.x)

DirectoryIndex:預設文檔

DirectoryIndex index.html index.php index.htm default.html
  • URL 未指定檔名時,按順序尋找第一個存在的檔案
  • 若全部不存在且 Options Indexes 開啟 → 顯示目錄列表
  • Options Indexes 關閉 → 回傳 403 Forbidden

AccessFileName:分散式設定檔名稱

AccessFileName .htaccess
  • 定義每個目錄下的存取控制檔名,預設 .htaccess
  • 可修改為其他名稱 (如 .acl),但需對應修改 AllowOverride
  • 允許使用者在無主配置權限時自行管理目錄權限

Files 指令:針對檔案名稱存取控制

<Files ".htaccess">
    Order allow,deny
    Deny from all
</Files>

<FilesMatch "\.(bak|config|sql|log)$">
    Order allow,deny
    Deny from all
</FilesMatch>
  • 不論檔案位於哪個目錄,符合名稱模式即套用規則
  • 關鍵安全用途:防止敏感檔案 (.htaccess, .htpasswd, *.bak, *.sql, *.log) 被直接下載
  • FilesMatch 支援正則表達式,更靈活

CacheNegotiatedDocs:代理快取協商

# CacheNegotiatedDocs
  • 預設 Apache 拒絕代理伺服器快取協商內容
  • 開啟後允許代理快取,提升效能但可能導致內容過期
  • 現代 CDN/反向代理通常自行處理快取策略,較少依賴此指令

UseCanonicalName:規范主機名

UseCanonicalName On
  • On (預設):自動導向使用 ServerName + Port 建構的規范 URL,確保瀏覽器地址列一致
  • Off:使用客戶端請求中的 Host: 標頭與 Port 建構 URL (HTTP/1.1 支援)
  • 虛擬主機環境建議 On,避免重複內容 SEO 問題

配置優先序與繼承

  1. 主配置 httpd.conf / apache2.conf
  2. 虛擬主機 <VirtualHost> 覆蓋
  3. 目錄 <Directory> / <Location> 進一步細化
  4. .htaccess 最後套用 (若 AllowOverride 允許)

子目錄繼承父目錄設定,AllowOverride None 可阻斷 .htaccess 讀取,提升效能與安全。

copyright © 萬盛學電腦網 all rights reserved