我有一个使用apache htpasswd进行密码保护的开发中的站点.
如何排除来自FB共享的请求,使其不受密码保护?
这意味着,当用户尝试通过浏览器访问时,我仍然希望该站点受密码保护,但如果请求来自FB共享ping,它应该允许它.
我看到FB共享ping有这个用户代理,facebookexternalhit/1.1,但我不知道如何实现它.
谢谢,
Tee
小智 7
这个答案假设你使用的是Apache 2.1或更高版本:
使用该mod_authz_host
模块,您可以通过.htaccess中的主机名或httpd.conf文件的<Location>或<Directory>部分中的主机名进行访问控制,例如:
<Location />
Allow from apache.org
Allow from .net example.edu
</Location>
Run Code Online (Sandbox Code Playgroud)
请注意,您可以在此处使用部分域名,因此在此示例中将允许访问www.apache.org.
要确保已mod_authz_host
安装,请在httpd.conf中检查类似于以下内容的行:
LoadModule authz_host_module modules/mod_authz_host.so
Run Code Online (Sandbox Code Playgroud)
这样做的一个缺点是它将为每次访问执行反向查找,这可能是也可能不是您的性能问题.
另一种选择是通过User-Agent进行限制.然而,这是一种不可靠的技术,因为User-Agent
它很容易被欺骗.但根据您的偏执程度,它可能适合您的目的:D
要限制User-Agent
,mod_setenvif
除了模块之外,还需要确保加载mod_authz_host
模块.在httpd.conf中检查类似于以下内容的行:
LoadModule setenvif_module modules/mod_setenvif.so
Run Code Online (Sandbox Code Playgroud)
然后,您可以在<Location>,<Directory>或.htaccess中配置访问控制,如下所示:
SetEnvIf User-Agent ^facebookexternalhit/1\.1 let_me_in
<Location />
Order Deny,Allow
Deny from all
Allow from env=let_me_in
</Location>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2042 次 |
最近记录: |