我想允许使用RewriteMap
基于白名单的引荐来源。因为我只需要whitelist.map
中的域和tld,我想从%{HTTP_REFERER}
中提取这些部分并对其进行测试。
说明一下:
推荐人可以是:
http://www.example.com/somepage.html
我想测试
example.com
到目前为止,我得到了以下代码,我认为正则表达式部分运行不正常:
RewriteMap whitelist txt:whitelist.map
RewriteCond %{HTTP_REFERER} !=""
RewriteCond %{HTTP_REFERER} ([^.]+)\.([^.]+)\.([^.]+)\/$
RewriteCond ${whitelist:%2.%3|NOT-FOUND} =NOT-FOUND
RewriteRule ^.* http://www.somewhere-else.com/ [R,L]
使用whitelist.map
## whitelist.map
## List of allowed referrers
example.com yes
感谢您的帮助
答案 0 :(得分:1)
您可以用这个替换当前代码
RewriteMap whitelist txt:whitelist.map
RewriteEngine On
RewriteCond %{HTTP_REFERER} ^http://(?:.*?)([^.]+\.[^./]+)/ [NC]
RewriteCond ${whitelist:%1|NOTFOUND} NOTFOUND
RewriteRule ^ http://www.somewhere-else.com [R,L]
注意:此代码假定列入白名单的域是第一级域(例如,不像.co.uk
)