在htaccess中,我如何阻止每个访问者,包括机器人,除了来自特定域或特定用户代理的访问者?
我必须保护每个页面不被访问,除了几个允许的页面。
每个被阻止的人都应该收到自定义通知。
由于
答案 0 :(得分:4)
首先允许包含禁止消息的公共页面。然后允许具有相应RewriteCond
的特定引荐来源和用户代理的请求,并将状态403
发送给其他所有
RewriteEngine on
# allow public pages
RewriteRule ^forbidden.html$ - [L]
RewriteRule ^public1.html$ - [L]
RewriteRule ^public2.html$ - [L]
# serve everyone from specific-domain or specific-user-agent
RewriteCond %{HTTP_REFERER} ^https?://www.specific-domain.com [OR]
RewriteCond %{HTTP_USER_AGENT} ^specific-user-agent$
RewriteRule ^ - [L]
# everybody else receives a forbidden
RewriteRule ^ - [F]
ErrorDocument 403 /forbidden.html