我在 Google 和 StackOverflow 上四处寻找这个问题的答案,但我对 .htaccess 了解不多这一事实并不能帮助我确定适合我的情况的正确答案是什么,所以我在这里问。
我的情况是我有几个站点在服务器上使用相同的物理目录作为它们的根目录。
这一切都很好,但我想确保每个站点都无法从浏览器访问彼此的图像等,除非它们位于正确的域中。
目前我有一个这样的文件结构:
/resources/{resource}/{full_domain_name}
因此,例如www.domain.co.uk
会有这样的结构:
http://www.domain.co.uk/resources/images/www.domain.co.uk/some_image.jpg
但是如果www.domain_2.co.uk
存在使用相同的物理目录作为站点根目录,那么他们可以从自己的域中查看其他域的资源,如下所示:
http://www.domain_2.co.uk/resources/images/www.domain.co.uk/some_image.jpg
这并不是一个真正的主要问题,因为这些目录中绝对没有存储任何敏感信息,但这更令人烦恼,我宁愿用户无法做到这一点(到目前为止,实际上没有人这样做)。
我尝试将 .htaccess 文件放入 /resources 目录,但我坚持使用正则表达式等。
我基本上想确保 URI 包含当前域名,否则重定向到 403 错误页面。
这就是我想出的:
RewriteCond %{REQUEST_URI} !^(/resources/[^/]*/%{HTTP_HOST})(.*)$
RewriteRule ^(.*)$ /error/403.php
我放在[^/]
位的原因是因为有几个文件夹,例如:
/resources/images/{full_domain_name}
/resources/scripts/{full_domain_name}
/resources/stylesheets/{full_domain_name}
有人可以帮我解决这些条件吗?
任何帮助,将不胜感激。