【问题标题】:.htaccess Redirect based on HTTP_REFERER being empty.htaccess 基于 HTTP_REFERER 为空的重定向
【发布时间】:2013-01-25 07:35:45
【问题描述】:

我正在尝试在 WP 博客安装上设置重定向,该重定向将检测来自无处(即不是来自其他站点)的任何人。这个想法是捕获一些将预先构建的 URL 插入系统以创建 cmets/posts 的垃圾邮件机器人。我想如果他们没有引荐网站,我可以将它们弹回主页(www.domain.com/index.php 或只是 www.domain.com),这应该会干扰机器人,但不会干扰真人.

我知道推荐人可以伪造,但希望它至少能阻止愚蠢。

我对 .htaccess 重写规则知之甚少(我为自己是菜鸟而道歉),但我在现有答案或在线其他任何地方都找不到这样做的规则,尽管进行了多次搜索。要么没有人这样做,要么我的措辞不正确。

任何帮助表示赞赏。 :)

【问题讨论】:

    标签: apache .htaccess rewrite


    【解决方案1】:

    我建议不要这样做。通过这样做,您可能会惹恼和疏远一部分潜在用户:例如,我的浏览器设置为不报告推荐人信息,其他人使用匿名网络。您可以通过匹配他们报告的用户代理字符串来捕获转储机器人(如 here 所示)。

    否则很简单:匹配 RewriteCond 中的 HTTP_REFERER 环境变量:

    RewriteCond %{HTTP_REFERER} ^$
    RewriteRule .* http://example.com/
    

    RewriteCond 检查referer 是否为空字符串; RewriteRule 将所有内容重定向到http://example.com/ root。这是一个硬重定向,这意味着服务器将发出一个 R=301 永久移动的标头。如果您只是想偷偷地提供另一个资源,请通过指定相对 URL 来使用软重定向,例如 RewriteRule .* index.php。但是,对于不报告推荐人信息的人来说,将他们重定向到一个页面可能会更友好,比如“如果您想阅读此页面,您应该启用推荐人报告”。

    有关此类事情的更多示例,请参阅the manual。那里有一个非常相似的防止盗链方法。

    【讨论】:

    • 太好了,谢谢!我很想做简单的版本,因为它纯粹是对主页的重定向:它不会将它们转移到任何非常糟糕、烦人或其他令人讨厌的地方。不过,我已经为所有可怕的机器人代码添加了书签。我可能会先尝试一下,看看它是否会阻止它们,如果没有,则再做一次。再次感谢您提供信息丰富且有用的答案。惊人的!编辑:刚刚发现了无限循环的潜力(即使在现场也没有报告来自浏览器的重定向)。呸。时间按照建议的额外页面,谢谢!
    猜你喜欢
    • 2012-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多