仅在 .htaccess 中的特定时间允许来自特定引用者的访问

问题描述

我在我的 htaccess 文件中使用此代码来阻止从特定网站到我网站的流量并且它有效:

RewriteEngine On
SetEnvIfNoCase Referer "example.com" bad_referer
Order Allow,Deny
Allow from ALL
Deny from env=bad_referer

现在我要为这段代码设置一个时间,例如,特定网站的访问者只能在 08:00 到 17:00 访问我的网站

我试过了:

RewriteEngine On
RewriteCond %{TIME_HOUR}%{TIME_MIN} >0800
RewriteCond %{TIME_HOUR}%{TIME_MIN} <1700 
SetEnvIfNoCase Referer " example.com " bad_referer
Order Allow,Deny
Allow from ALL
Deny from env=bad_referer

但是好像不行,访问者仍然在设置的时间戳之间被屏蔽

谢谢

罗伯特

解决方法

您不能将 SetEnvRewriteRule 一起使用,因为这两个指令是两个不同 apache 模块的一部分。您可以使用 mod-rewrite 来实现您想要的:

RewriteEngine On
RewriteCond %{TIME_HOUR}%{TIME_MIN} >=0800
RewriteCond %{TIME_HOUR}%{TIME_MIN} <=1700
RewriteCond %{HTTP_REFERER} example\.com [NC]
RewriteRule ^ - [R=403,L]