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