2012-01-26 29 views
0

我想阻止所有来自domain1和domain2的网站访问,除非他们专门去//media。到目前为止,我有:.htaccess:除特定的dirs外,我如何阻止查阅者?

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等。

相关问题