我在同一个域名下有很多网站,比如
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