Regex mod_重写-获取域和tld

Regex mod_重写-获取域和tld,regex,apache,mod-rewrite,Regex,Apache,Mod Rewrite,我想使用重写映射允许基于白名单的推荐人。因为我只需要我的白名单.map中的域和tld,所以我想从%{HTTP\u REFERER}中提取这些部分并对其进行测试 为了说明这一点: 推荐人可以是: http://www.example.com/somepage.html 我想测试一下 example.com 到目前为止,我得到了以下代码,我猜正则表达式部分工作不好: RewriteMap whitelist txt:whitelist.map RewriteCond %{HTTP_REFERE

我想使用
重写映射
允许基于白名单的推荐人。因为我只需要我的
白名单.map中的域和tld,所以我想从
%{HTTP\u 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]
使用
白名单.map

## whitelist.map
## List of allowed referrers

example.com yes

感谢您的帮助

您可以用此代码替换当前代码

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
不同)