2012-01-26 1 views
0

Я хочу заблокировать все обращения к веб-сайту из домена1 и domain2, если они специально не отправятся в / и /media. До сих пор у меня есть:.htaccess: Как заблокировать рефери EXCEPT для определенных каналов?

RewriteCond %{HTTP_REFERER} domain1\.com [NC,OR] 
RewriteCond %{HTTP_REFERER} domain2\.com [NC] 
RewriteRule .* - [F] 

Это работает отлично, за исключением того, что он блокирует все запросы. Я хочу разрешить входящим ссылкам из этих двух доменов иметь доступ к / и /mediaтолько. До сих пор мне не удалось это понять.

Любая помощь очень ценится.

+0

Извините за более ранний ответ; Я обновил его с помощью (надеюсь) более полного ответа. – summea

ответ

2

А что-то вроде этого:

RewriteCond %{HTTP_REFERER} domain1\.com [NC,OR] 
RewriteCond %{HTTP_REFERER} domain2\.com [NC] 
RewriteCond %{REQUEST_URI} !media [NC,OR] 
RewriteCond %{REQUEST_URI} !^$ [NC] 
RewriteRule (.*)$ $1 [R,L] 
RewriteRule .* - [F] 

Проверил синтаксисом: http://www.lyxx.com/freestuff/002.html

+1

Ваш первый код правильный Summea. Apache удаляет ведущую косую черту в RewriteRule. – Gerben

+1

Он работает, однако, для серверов, которые он не блокирует, Apache обслуживает виртуальный хост по умолчанию вместо правильного! Это совершенно другая проблема, поэтому я собираюсь отметить ответ, как принято. Спасибо, summea! – Julian

0

Как насчет:

RewriteCond %{HTTP_REFERER} (:/|\.)(domain1|domain2)\.com [NC] 
RewriteRule ^([^/]*$|media/)  -      [skip=1] 

RewriteCond %{HTTP_REFERER} (:/|\.)(domain1|domain2)\.com [NC] 
RewriteRule .*      -      [F] 

не нужны никакие внешние переназначения. Я предполагаю, что вы также разрешите *.domain1.com и т. Д.

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