2014-11-17 3 views
1

Я хочу, чтобы рефереры на основе белого списка использовали RewriteMap. Поскольку я хочу только домен и tld в моем whitelist.map, я хочу извлечь эти части из %{HTTP_REFERER} и протестировать это.mod_rewrite - получить домен и tld

Для иллюстрации:

реферер может быть:

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 

Спасибо за вашу помощь

ответ

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 например)

Смежные вопросы