0

我在 www.kruaklaibaan.com 的网站(是的,我知道这很可怕)目前有 370 万个赞,但是在努力建立一个不使用一些华丽的 phpBB 怪物的适当网站时,我注意到所有这些赞都是针对无效 URL 注册的实际上根本没有链接回我网站的 URL。取而代之的是,这些赞都已针对 URL 编码的版本进行了注册:

www.kruaklaibaan.com%2Fviewtopic.php%3Ff%3D42%26t%3D370

这显然是不正确的。由于我已经有很多喜欢,我希望要么将这些喜欢更新到正确的 URL,要么让它们指向 www.kruaklaibaan.com 的基本 URL

他们应该注册的正确 url 是(不是 url 编码的):

www.kruaklaibaan.com/viewtopic.php?f=42&t=370

Facebook 上有没有人可以和我讨论这个问题?3.7m 的点赞数太多了,如果没有太多的心痛,就无法重新开始。花了2年的时间来建立这些。

4

1 回答 1

0

除了让 Facebook 上的某个人更新 URL,我能想到的唯一可行的选择是创建自定义 404 错误页面。我已经用你的 URL 测试了这样一个页面,并且下面的作品。

首先,您需要为 ErrorDocument(或其他服务器中的等效项)设置 Apache 指令。

ErrorDocument 404 /path/to/404.php

这将导致任何 404 页面命中脚本,然后脚本将进行必要的检查并在适当的情况下进行重定向。

我测试了以下脚本,它运行良好。

<?php

if ( $_SERVER['REQUEST_URI'] == '/%2Fviewtopic.php%3Ff%3D42%26t%3D370' ) {
    Header("HTTP/1.1 301 Moved Permanently");
    Header("Location: /viewtopic.php?f=42&t=370");
    exit();
} else {
    header('HTTP/1.0 404 Not Found');
}

?><html><body>
<h1>HTTP 404 Not Found</h1>
<?php echo $_SERVER['REQUEST_URI']; ?>
</body></html>

这是实现此目的的一种半肮脏的方式,但是我在 Apache2.2 中使用 mod_alias 的 Redirect 和 mod_rewrite 的 RewriteRule 尝试了几种变体,但我都无法使用包含百分比编码字符的 URL。我怀疑使用 nginx,您可能会以更优雅的方式在服务器中处理此问题,从而获得更好的成功。

于 2013-05-09T11:22:58.823 回答