仅允许来自特定引用者的用户(重定向其余的) - HTACCESS

时间:2016-06-30 17:48:35

标签: apache .htaccess url-redirection referrer http-referer

我一直试图阻止尝试查看.php页面的所有人访问,而不是来自我的特定跟踪链接。

我希望如果他们不是来自我的链接,他们会被重定向到另一个网站。 我尝试使用.htaccess方法如下:

    RewriteEngine On
RewriteBase /

# allow these referers to passthrough
RewriteCond %{HTTP_REFERER} ^http://subdomain.domain.com
RewriteRule ^ - [L]

# redirect everything else
RewriteRule ^ http://anotherDomain.com/ [R,L]

这是因为http://subdomain.domain.com是一个重定向到website.php的跟踪网址,但它似乎无法正常工作,尽管有任何推荐人,甚至直接在工具栏中输入网站的网址都是用户to website.php。

我想要实现的是只有来自subdomain.domain.com的用户才能看到website.php

提前感谢。

2 个答案:

答案 0 :(得分:5)

您可以使用order deny,allow执行此操作,将其放入.htaccess:

order deny,allow
deny from all
allow from subdomain.domain.com

除非他们通过subdomain.domain.com

访问,否则将拒绝所有人访问

然后,要重定向未来自subdomain.domain.com的用户,您可以使用:

RewriteCond %{HTTP_HOST} !^www\.subdomain.domain\.com [NC]
RewriteCond %{HTTP_HOST}   !^$
RewriteRule ^/?(.*)         http://www.example.com/$1 [L,R,NE]

对于Apache 2.4:

您可以使用IF指令,因为您使用的是2.4:

<If "%{HTTP_HOST} != 'www.subdomain.domain.com'">
Redirect / http://www.example.com/
</If>

并为order deny,allow添加以下内容:

<Limit GET>
</Limit>

答案 1 :(得分:0)

tl; dr

RewriteEngine On
RewriteCond "%{HTTP_REFERER}" "!your-valid-referer.example.com"
RewriteRule ^.*$ - [F]

详细信息

  • RewriteCond-做以下比较:
  • "%{HTTP_REFERER}"-请求时的当前referer;反对:
  • "!your-valid-referer.example.com"-有效的引荐来源;如果不是,则:
  • RewriteRule ^.*$-不管它是什么;
  • [F]-不要授予访问权限。分配HTTP状态代码403Forbidden

OP的情况

RewriteEngine On
RewriteCond "%{HTTP_REFERER}" "!subdomain.domain.com"
RewriteRule ^ http://anotherDomain.com/ [R,L]