【问题标题】:Only allow users from specific referrer (redirect the rest) - HTACCESS只允许来自特定推荐人的用户(重定向其余的) - HTACCESS
【发布时间】:2016-11-02 23:03:41
【问题描述】:

我一直试图阻止所有试图查看 .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 的跟踪 URL,但它似乎不起作用,尽管有任何引荐来源,甚至直接在工具栏中输入 website.php 的 URL 都会将用户带到网站.php。

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

提前致谢。

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • uhm.. 不工作,每个请求我都会收到 403,即使来自 subdomain.domain.com
    • 你运行的是什么版本的 Apache?
    • httpd 2.4.18 (Unix)
    • 由于您使用的是 2.4,因此我添加了一个替代方法的编辑供您尝试。希望对您有所帮助。
    • 好的,现在正在工作,但我刚刚发现我的跟踪服务正在执行 DMR(双元刷新),所以引用者变得空白(我不知道为什么在开发者控制台中我可以看到推荐人,但是当链接到“我的推荐人”网站时,我看到推荐人是空白的......如果有办法加入两个世界,拥有 DMR 并阻止来自其他域的人,那就太好了...
    【解决方案2】:

    tl;博士

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

    详情

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

    OP的案例

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-05
      • 2021-04-04
      • 1970-01-01
      • 2021-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多