.htaccess - 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]
我没有看到错误。有人可以帮助解决这个问题吗?
解决方案
如果您将变量更改为手动输入,它会起作用吗?
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^(http://|https://)(www.)?(example.com).*$ [NC]
RewriteRule ^.*$ - [NC,R=403,L]
推荐阅读
- reactjs - 为什么我需要新的 Context API?该值已导入
- python - 在 Windows 10 上安装 Eric6 Python
- angularjs - Button Delete 方法如何首先获取变量数据而不是提示消息?附上我的代码
- java - 访问扩展类中的属性/常量
- c# - 从 WebApi 到 HttpRecquest 中的 Mysql 数据库中检索数据?
- javascript - 将 lodash 的 pickby 转换为 javascript
- c - 在空格后读取行
- javascript - 字符串的分隔逗号,但不包含在方括号和圆括号中
- java - 查找下载文件的 Mime-Type
- java - 如何收听(或拦截)对 EclipseLink JPA L2 Cache 的所有更改,包括。通过缓存协调?