只允许来自特定推荐人的用户(重定向其余部分)- HTACCESS

Only allow users from specific referrer (redirect the rest) - HTACCESS

我一直试图阻止所有试图查看 .php 页面但未来自我的特定跟踪 link 的人的访问。

我希望如果它们不是来自我的 link,它们将被重定向到另一个网站。 我尝试使用 .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 的跟踪 url 但它似乎不起作用,尽管有任何引荐来源网址,甚至输入 url 对于 website.php 直接在工具栏中将用户带到 website.php。

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

提前致谢。

您可以使用 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/ [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>

tl;博士

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

详情

  • RewriteCond - 比较:
  • "%{HTTP_REFERER}" - 请求时的当前 referer;反对:
  • "!your-valid-referer.example.com" - 有效的引用者;如果不是:
  • RewriteRule ^.*$ - 不管是什么;
  • [F] - 不要访问它。分配一个 HTTP 状态代码 403 又名 Forbidden.

OP 案例

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