【问题标题】:Facebook links to my site resolve as 403 forbidden指向我网站的 Facebook 链接解析为 403 禁止
【发布时间】:2010-05-31 02:03:03
【问题描述】:

您好,我遇到了一个非常奇怪的问题。
每当我在 Facebook 上发布指向我网站的链接时,它们都会显示为禁止访问。
该网站本身运行良好,在其他网站上链接时我没有看到这一点。
这可能是服务器配置错误吗?关于在哪里看的任何想法?

这里有一些信息:
我有一个运行 WHM 11.25.0 的专用服务器
我在这里使用 cPanel 11.25.0 托管了 2 个站点

错误信息:

禁止

你没有 访问权限 /blog/deepwater-horizo​​n-11/ 关于这个 服务器。

另外,404 Not Found 时遇到错误 尝试使用 ErrorDocument 来 处理请求。


Apache/2.2.14 (Unix) mod_ssl/2.2.14 OpenSSL/0.9.8i DAV/2 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 服务器位于 www.offshoreinjuries.com 端口 80

更新:
如果有帮助,这里是一个示例链接。 (注意直接进入链接页面可以正常工作)
http://www.facebook.com/l.php?u=http%3A%2F%2Fwww.offshoreinjuries.com%2Fblog%2Fdeepwater-horizon-11%2F&h=834ea

更新和回答:
发现问题并在下面添加了完整的答案。

【问题讨论】:

  • 除非您给我们链接,否则很难看到。虽然在这里发布您的 Facebook 链接可能不是一个好主意。
  • 感谢 DMan,我在帖子中添加了链接。它通过facebooks“小心!”失败了。页面(您可能需要退出 FB 才能看到它),但是当直接访问或链接到任何其他站点时,链接可以正常工作。
  • 您已经发布了损坏的链接,什么是正确的? offshoreinjuries.com/blog/deepwater-horizon-11 既不能从 facebook 也不能直接工作
  • @zerkms 是的,您发布的链接是我要链接的正确链接。我的结果与 Álvaro G. Vicario 的结果类似,除了 facebook,它在任何地方都可以正常工作

标签: facebook http-status-code-403 mod-security


【解决方案1】:

您必须在某个地方有一条规则,该规则可以读取 HTTP_REFERER 并拒绝来自 Facebook 的传入链接。严重地。这就是字里行间发生的事情:

无推荐人

telnet www.offshoreinjuries.com 80
HEAD /blog/deepwater-horizon-11/ HTTP/1.1
Host: www.offshoreinjuries.com

    HTTP/1.1 200 OK
    Date: Fri, 28 May 2010 09:19:45 GMT
    Server: Apache/2.2.14 (Unix) mod_ssl/2.2.14 OpenSSL/0.9.8i DAV/2 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635
    X-Powered-By: PHP/5.2.12
    X-Pingback: http://www.offshoreinjuries.com/blog/xmlrpc.php
    Content-Type: text/html; charset=UTF-8

200 好的,很好。

Facebook 推荐人

telnet www.offshoreinjuries.com 80
HEAD /blog/deepwater-horizon-11/ HTTP/1.1
Host: www.offshoreinjuries.com
Referer: http://www.facebook.com/l.php?u=http%3A%2F%2Fwww.offshoreinjuries.com%2Fblog%2Fdeepwater-horizon-11%2F&h=834ea

    HTTP/1.1 403 Forbidden
    Date: Fri, 28 May 2010 09:21:04 GMT
    Server: Apache/2.2.14 (Unix) mod_ssl/2.2.14 OpenSSL/0.9.8i DAV/2 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635
    Content-Type: text/html; charset=iso-8859-1

403 禁止,不好。

任何其他推荐人

telnet www.offshoreinjuries.com 80
HEAD /blog/deepwater-horizon-11/ HTTP/1.1
Host: www.offshoreinjuries.com
Referer: http://alvaro.es/

    HTTP/1.1 200 OK
    Date: Fri, 28 May 2010 09:20:36 GMT
    Server: Apache/2.2.14 (Unix) mod_ssl/2.2.14 OpenSSL/0.9.8i DAV/2 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635
    X-Powered-By: PHP/5.2.12
    X-Pingback: http://www.offshoreinjuries.com/blog/xmlrpc.php
    Content-Type: text/html; charset=UTF-8

200 再次确定。

您的服务器正在积极拒绝来自 Facebook 的访问者。

【讨论】:

  • 非常感谢阿尔瓦罗。我想我会联系我的主机,因为我刚刚迁移到这个服务器并且几乎没有改变任何东西。但感谢您对此进行调查,如果您想到我可以改变这种行为的地方,请告诉我!
  • 仔细查看他们提供的任何控制面板。你永远不知道:)
【解决方案2】:

我终于能够找到这种行为的根源。
我的主机 HostGator 的默认 mod_security 设置包括一组白名单和黑名单。在检查这些后,我发现 .facebook.com/l.php 被列入黑名单。
l.php 是一个包装页面,它提供一个警告,表明您将离开 facebook。据我了解,因为这很容易被利用,HostGator 选择基本上将所有出站 Facebook 链接列入黑名单。

我通过从 mod_security 黑名单中删除 .facebook.com/l.php 解决了我的问题,但是我也可以通过单击 WHM 将我的 mod_security 设置重置为默认值(与 HostGator 配置相比)。

【讨论】:

  • mod_security 默认开启吗?我有一个 HostGator 帐户,并且从来没有遇到过 Facebook 推荐人的任何问题(或者我是这么认为的)。
  • 看到我有 2 台带有 HostGator 的专用服务器,其中一台,mod_security 设置为“无配置”,只有在这个更新的服务器上,我才能看到一些 HostGator 准备好的设置。但据我了解,mod_security 默认情况下是打开的,应该打开......只是 HostGator 黑名单对我的需求来说有点矫枉过正。我在WHM的“插件”>“Mod Security”>“Edit Config”下找到了设置。
  • 更新 mod_security 规则对我有用。我在专用服务器上使用 centos 网络面板,默认规则导致了这种情况。
猜你喜欢
  • 1970-01-01
  • 2012-10-29
  • 1970-01-01
  • 2017-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多