私は数か月間ウェブサイトに取り組んでおり、SEOを改善してから視聴者を獲得し始めましたが、.heroku.comドメインからしかアクセスできませんでした。私はそれがnamecheapで.comドメインを購入する時だと思いました。それはサイトをより合法的に見せ、より多くのクリックにつながるかもしれないからです。
セットアップが完了し、私のサイトは両方ともexample.comとexample.herokuapp.comにあります。最初は、Googleのすべての検索結果が.herokuapp.comサイトにつながっており、気になる多くのクエリの最初のページにいました。しかし今、私のページはどこにも見当たりません。これは、グーグルがこれを重複したコンテンツと見なし、それを厳しく罰するためだと考えています。
基本的に、Googleのすべてのリンクを通常の.comサイトに導き、herokuapp.comサイトにアクセスできないようにするか、すべての検索エンジンから完全に非表示にしないようにします。私はいくつかの可能な解決策に出くわしましたが、私のサイトはすでに400ページ以上で構成されているため、それらのどれも非常にクリーンまたは実用的ではありません。 ( 検索結果でHerokuアプリドメインを削除する方法 )
これについて最善の方法は何でしょうか?
@Stephen Ostermillerの素晴らしいアドバイスのおかげでようやく機能しました。
バックエンドがExpressのNode.jsで実行されている場合、次のソリューションが機能します。まず、必要なすべてのページの301リダイレクトを作成します。例としてaboutページのコードを次に示します。
/// About Page ////
router.get("/about", function(req, res){
const Host = req.hostname;
const url = req.url;
if(Host === "example.herokuapp.com"){
res.redirect(301, "http://www.example.com" + url);
} else{
res.render("about");
}
});
また、データベース内でクエリを完了して変数を渡す必要があるgetリクエストに対しても簡単に実装できます。
/// Kanji Index Route///
router.get("/", function(req, res){
/// Get all kanjis from db///
Kanji.find({}, function(err, allKanjis){
if(err){
console.log(err);
} else {
const Host = req.hostname;
const url = req.url;
if(Host === "example.herokuapp.com"){
res.redirect(301, "http://www.example.com" + url);
} else{
res.render("main/kanjis", {kanjis : allKanjis});
}
}
});
});
req.url
はパスの最後の部分のみを取得するようです。そのため、リダイレクトのルートを入力するときはそのことを忘れないでください。
301リダイレクトをすべて設定した後、 Google Change of Address Tool の使用方法に関するガイドに従ってください。
Googleの更新にはしばらく時間がかかるため、まだ結果を確認できません。しかし、これで問題は解決すると思います。