Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache .htaccess:如何阻止除特定目录外的引用?_Apache_.htaccess - Fatal编程技术网

Apache .htaccess:如何阻止除特定目录外的引用?

Apache .htaccess:如何阻止除特定目录外的引用?,apache,.htaccess,Apache,.htaccess,我想阻止域名1和域名2对网站的所有访问,除非它们特别转到/和/media。到目前为止,我已经: RewriteCond %{HTTP_REFERER} domain1\.com [NC,OR] RewriteCond %{HTTP_REFERER} domain2\.com [NC] RewriteRule .* - [F] 除了阻止所有请求之外,它工作得非常好。我想允许来自这两个域的传入链接只能访问/和/media。到目前为止我还没有弄明白 非常感谢您的帮助。这样的事情怎么样: Rewrit

我想阻止域名1和域名2对网站的所有访问,除非它们特别转到
/
/media
。到目前为止,我已经:

RewriteCond %{HTTP_REFERER} domain1\.com [NC,OR]
RewriteCond %{HTTP_REFERER} domain2\.com [NC]
RewriteRule .* - [F]
除了阻止所有请求之外,它工作得非常好。我想允许来自这两个域的传入链接只能访问
/
/media
。到目前为止我还没有弄明白


非常感谢您的帮助。

这样的事情怎么样:

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]
检查语法:

如何:

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

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

不需要外部重定向。我在这里假设您也允许
*.domain1.com
等。

对于前面的答案,我感到抱歉;我已经更新了一个(希望是)更完整的答案。你的第一个代码是正确的。Apache删除了RewriteRule中的前导斜杠。它确实可以工作,但是对于它没有阻止的dir,Apache提供的是默认的虚拟主机,而不是正确的虚拟主机!这是一个完全不同的问题,所以我将把答案标记为已接受。谢谢summea!