0

www.kruaklaibaan.com の私のサイト (はい、それが恐ろしいことだとわかっています) には、現在 370 万のいいね!実際には私のサイトの 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>

これはこれを達成するためのやや汚い方法ですが、mod_alias の Redirect と mod_rewrite の RewriteRule を使用して Apache2.2 でいくつかのバリエーションを試しましたが、どちらもパーセントでエンコードされた文字を含む URL を操作できませんでした。nginx を使用すると、サーバーでこれを処理するためのより適切な方法で成功する可能性があると思われます。

于 2013-05-09T11:22:58.823 に答える