【发布时间】:2020-03-04 04:21:31
【问题描述】:
我正在运行 ubuntu 18.04 和 Apache 2.4 版,并且有一个域和两个网站
域:this.domain
website1 website.this.domain
website2 web-site.this.domain
我试图仅在从 website2 中单击链接时才允许访问 website1 这意味着如果您从地址栏中输入 website.this.domain 它会将您重定向到 website2 否则如果您来自 website2 您将能够访问页面。
我的 .htaccess :
RewriteEngine on
RewriteBase /
RewriteCond ^{HTTP_REFERER} ^https://web-site.this.domain/
RewriteRule ^ - [L]
RewriteRule ^ https://web-site.this.domain [R,L]
代码阻止人们直接访问并允许来自网站的人2。
问题是当人们有权访问时,它不会加载包含我试图检查的所有数据的页面,它似乎显示Network Error 0x80070005, Access is denied. 如果我删除规则一切正常,但可以从外部和内部访问。
到目前为止我也尝试过
<If %{HTTP_HOST} !='https://web-site.this.domain'">
Redirect / https://web-site.this.domain
</If>
问题是请求来自哪里(直接或通过链接)并不重要,它总是将我重定向到 website2,我也尝试过 {HTTP_REFERER} 仍然没有任何成功。
任何帮助将不胜感激。
【问题讨论】:
-
https://web-site.this.domain不是主机名,该 URL 的主机名部分将是web-site.this.domain -
“问题是当人们可以访问时,它不会加载包含所有数据的页面” - 您可能在这里指的是外部脚本、样式表、图像?好吧,那些已经被你的主文档引用了,所以他们的引用者当然不会来自其他域,而是来自你自己的域。
-
@CBroe 我刚刚对此进行了测试,结果相同。
-
(我不是想说这应该有效,我只是指出您使用的值不是主机名开头。了解术语非常重要,否则你最终可能会做比必要更多的试验和错误。)