【问题标题】:Trying to allow access to my website from a specific link using .htaccess尝试允许使用 .htaccess 从特定链接访问我的网站
【发布时间】: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 我刚刚对此进行了测试,结果相同。
  • (我不是想说这应该有效,我只是指出您使用的值不是主机名开头。了解术语非常重要,否则你最终可能会做比必要更多的试验和错误。)

标签: apache .htaccess


【解决方案1】:

解决方案是:

Options +FollowSymLinks -MultiViews
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^web\-site\.this\.domain [NC]
RewriteRule ^ - [L,NC]
RewriteRule ^ - [F,NC]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-07
    • 1970-01-01
    • 1970-01-01
    • 2014-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-13
    相关资源
    最近更新 更多