我有一個網站正在使用apache htpasswd進行密碼保護。在密碼保護網站上允許FB共享
如何排除來自FB共享的請求,使其不受密碼保護?
這意味着,我仍然希望網站在用戶嘗試通過瀏覽器訪問時受到密碼保護,但如果請求來自FB共享ping,它應該允許。
我看到FB共享ping有這個用戶代理facebookexternalhit/1.1,但我不知道如何實現。
謝謝
三通
我有一個網站正在使用apache htpasswd進行密碼保護。在密碼保護網站上允許FB共享
如何排除來自FB共享的請求,使其不受密碼保護?
這意味着,我仍然希望網站在用戶嘗試通過瀏覽器訪問時受到密碼保護,但如果請求來自FB共享ping,它應該允許。
我看到FB共享ping有這個用戶代理facebookexternalhit/1.1,但我不知道如何實現。
謝謝
三通
這個答案假設你使用Apache 2.1或更高版本:
隨着mod_authz_host
模塊,你可以在.htaccess或<位置由主機進行訪問控制>或<目錄> httpd.conf文件的部分,例如:
<Location />
Allow from apache.org
Allow from .net example.edu
</Location>
請注意,您可以在這裏使用部分域名,因此www.apac在這個例子中he.org將被允許訪問。
要確保你已經安裝mod_authz_host
,檢查類似在httpd.conf下面一行:
LoadModule authz_host_module modules/mod_authz_host.so
一個缺點是,它會做一個反向查找每個訪問,這可能會或可能不會成爲您的性能問題。
另一種選擇是通過User-Agent進行限制。但是,這是一種不可靠的技術,因爲User-Agent
可能很容易被欺騙。但是,它可能是取決於你的偏執水平的用途確定:d
要通過User-Agent
限制,你需要確保你加載mod_setenvif
模塊除了mod_authz_host
模塊。檢查類似於在httpd.conf下面一行:
LoadModule setenvif_module modules/mod_setenvif.so
然後,您可以配置在<位置訪問控制>,<目錄>,或的.htaccess如下:
SetEnvIf User-Agent ^facebookexternalhit/1\.1 let_me_in
<Location />
Order Deny,Allow
Deny from all
Allow from env=let_me_in
</Location>