首页 > 解决方案 > htaccess 规则来保护一些独立于协议和主机的文件

问题描述

我有一个 htaccess 来限制对文件的访问,只能在网站上直接点击。将链接复制到另一个并打开它应该被禁止。

我的 htaccess 运行良好

RewriteCond %{HTTP_REFERER} !^http://localhost.*$ [NC]

RewriteRule ^.*$ - [NC,R=403,L]

现在我试图使它对协议和主机更具可变性,但现在没有人可以访问这些文件。代码应该和上面一样,只有变量 http(s) 和 localhost 部分......

RewriteCond %{HTTPS} =on
RewriteRule ^ - [env=proto:https]
RewriteCond %{HTTPS} !=on
RewriteRule ^ - [env=proto:http]

RewriteCond %{HTTP_REFERER} !^%{ENV:proto}://%{HTTP_HOST}.*$ [NC]
RewriteRule ^.*$ - [NC,R=403,L]

我没有看到错误。有人可以帮助解决这个问题吗?

标签: .htaccess

解决方案


如果您将变量更改为手动输入,它会起作用吗?

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^(http://|https://)(www.)?(example.com).*$ [NC]
RewriteRule ^.*$ - [NC,R=403,L]

推荐阅读