Apache限制对公共文件的访问

Apache限制对公共文件的访问

我在同一个域名下有很多网站,比如

domain.com
a.domain.com
b.domain.com
c.domain.com

它们都使用相同的资源(css 和 js),所以我认为最好不要将它们托管在每个网站上,而是将它们托管在一个地方,然后在所有网站上使用,因此我创建了一个额外的虚拟主机

resources.domain.com

它仅用于提供静态内容,但任何人都可以访问它。并不是说当所有文件都托管在每个站点上时情况并非如此,但现在它更加集中,我想知道是否有办法保护这些文件,以便只有当来自我域的站点请求时才会提供这些文件?假设用户访问c.domain.com并且需要resources.domain.com/css/base.css它并且它得到了服务,但是如果有人anotherdomain.com试图将此文件包含在他们的文档中,他们应该会得到 403 响应。

我想我可以在虚拟主机中添加类似的东西resources.domain.com,但没有成功

<VirtualHost *:80>
        ServerName resources.domain.com

        <Location />
                Order Deny,Allow
                Deny from all
                Allow from *.domain.com
        </Location>

        ...

</VirtualHost>

答案1

我认为你最好这样做

<Files "*">
Order deny, allow
Deny from all
Allow from 128.252.135.
Allow from .mydomain.com
Allow from host.mydomain.com

<Files ~ "^example\.(js|php)|robots\.txt$">
  Allow from all
  Satisfy any
</Files>

答案2

您也可以使用 .htaccess 文件来实现此目的。如果您无法从 apache 的配置文件重定向它。请在 .htaccess 文件的顶部添加下面列出的行。

Order deny,allow
Deny from all
Allow from 1.2.3.4  #your public IP address

相关内容