rel=canonical タグを生成したい C# で記述された MVC3 アプリがあります。これを自動的に達成する方法を探しているときに、この投稿に出くわしました。
開発環境に実装したところ、意図したとおりに機能し、次のようなタグが生成されます
<link href="http://localhost/" rel="canonical" />
.
私の質問は、これが何の役に立つのかということです。カノニカル URL は、たまたま URL が何であれではなく、明示的に指定したい場所 (つまり、本番サイト) を指すべきではないでしょうか?
私がこれを持ち出す理由は、私のホスティング プロバイダー (今のところ無名のままです) が、私のサイトを指す別の URL も生成するためです (同じ IP アドレスは別のホスト名です。理由はわかりません。逆引き DNS の目的であると彼らは主張しています)。 -- これは別の問題です)。しかし、私のページがこのミラーリングされた URL の下の Google 検索結果に表示されるようになりました。「重複コンテンツ」であるため、SEO には適していません。現在、サイトのドメインへの要求のみに応答するように IIS サイトを構成するだけで問題を解決しましたが、正規 URL がここでどのようなソリューションを提供できたかを調べる良い機会に思えました。
上記の投稿の解決策を使用すると、誰かがミラーリングされたサイトにアクセスした場合、rel=canonical リンク タグはミラーリングされた URL を含む正規の URL を出力しますが、これは私が望むものではありません。アドレスバーの URL に関係なく、常に である必要が<link rel="canonical" href="http://www.productionsite.com" />
あります。つまり、それが正規の URL のポイントではないでしょうか、それとも何か不足しているのでしょうか?
私が正しいと仮定すると、MVC3 アプリの正規 URL を生成するための受け入れられた一般的な方法はありますか? もちろん、ページごとに個別に定義することもrawUrl.Host
、ハードコードされたドメイン名にリンクしたソリューションのパラメーターを単純に置き換えることもできます。目的に合わないようです(少なくとも私の例では)。現在の URL を rel=canonical リンク要素に挿入するだけで、彼らはどのような問題を解決しようとしているのでしょうか?