【问题标题】:How to allow only same domain requests for specific directories with .htaccess?如何使用.htaccess 只允许对特定目录的相同域请求?
【发布时间】:2013-06-05 05:24:09
【问题描述】:

我有一些目录(比方说 engine/)只能由位于公共目录中的特定 php 代码访问,因此根本不需要外部访问。

除了来自同一个域(代码部署在没有硬编码域名的地方)的请求之外,如何限制每次访问?

.htaccess 大师可以在这里帮助我吗?


事实证明,除了基于引用的访问之外,我还必须以某种方式拒绝直接访问

【问题讨论】:

  • 顺便说一句。我会考虑把它放在你的文档根目录之外。
  • 此外,我正在考虑用“!”标记每个“引擎”目录在目录名称中,因此如果您可以创建一个仅适用于名称包含“!”的目录的掩码,那真是太棒了。
  • 我没有完全访问生产服务器,我只能将文件部署到给定的文件夹......所以我需要这个解决方法。顺便说一句,它为引擎提供了更多的灵活性。
  • @bwoebi 有没有这样的解决方案?
  • deny from all 的东西。对于目录,请在 apache 手册中搜索 <Directory> xml 标记

标签: php apache .htaccess restriction


【解决方案1】:

这是来自Using mod_rewrite to control access的示例

SetEnvIf Referer example\.com localreferer
<FilesMatch \.(jpg|png|gif)$>
Order deny,allow
Deny from all
Allow from env=localreferer
</FilesMatch>

更新:

要在根目录中使用单个 .htaccess 文件来保护目录,应该可以这样做:

Options +FollowSymlinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !mydomain\.com [NC]
# Add/Remove directories in next line
RewriteCond %{REQUEST_URI} /(dir1|dir2|dir3) [NC]
RewriteRule .* - [F,NC]

【讨论】:

  • 谢谢。你能告诉我如何修改 FilesMatch 来屏蔽一些给定的目录名称吗?
  • 顺便问一下,那里有类似“.htaccess for dummies”的教程吗?我真的很想用它,只是还没有找到合适的起点。
  • @Geri 修改了我的答案。忘记了最重要的部分:允许从本地域访问。
  • 谢谢!您为我节省了大量时间,并使我的数据安全......假设它是工作代码:D
  • 当我单击指向受限资源的链接时,这些东西运行良好(抛出 403),但是当我在浏览器中为同一链接按 Enter 键时,它会部分加载文件(外部文件、像一些 css,js 文件不加载,但根 html 被创建/响应)。如何克服这个问题?
猜你喜欢
  • 2014-01-06
  • 2020-10-18
  • 2019-10-03
  • 1970-01-01
  • 2014-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-11
相关资源
最近更新 更多