Falco
(Falco)
2022 年 2 月 21 日午後 7:35
1
\u003e 重要
\u003e
\u003e さらなる調査の結果、非正規インデックス作成を有効のままにすることにしました。詳細については、以下をご覧ください: Search engines now blocked from indexing non-canonical pages - #30 by sam
元の発表
Discourse は、リソースの正規ページではないページが要求された場合、X-Robots-Tag: noindex ヘッダーを返します。
Discourse はトピックリストとトピックの両方で自動スクロールデザインを使用していますが、これは GoogleBot のような検索エンジンのクローラーに見せるものではありません。検索エンジンは、各ページに 20 件の投稿が含まれるページ分割されたトピックを表示します。しかし、ユーザーは自身の投稿で特定の投稿にリンクでき、/t/title/topic_id/post_id の URL 形式を使用してリンクするため、これらはクローラーによって検出され、サイトの検索結果に重複コンテンツが追加され、ドメインが持つ貴重で限られたクロール予算を浪費することになります。
この問題を軽減するために、コミュニティのユーザーから、投稿固有の URL のような URL に X-Robots-Tag: noindex を追加することが提案されました。これは Discourse のすべての非正規 URL に拡張されました。これは非表示のサイト設定としてリリースされ、3 か月前はデフォルトで無効になっていましたが、その間、コミュニティサイトおよび meta.discourse.org でこのヘッダーを有効にして実験しました。
この期間の結果は今のところ良好であるため、この設定をデフォルトで有効にしました。
何らかの理由で、インスタンスでこの動作を望まない場合は、サーバーで docker exec -i app rails runner \"SiteSetting.allow_indexing_non_canonical_urls = true\" を実行することで、非正規ページのインデックス作成を有効にすることができます。
クロールや検索結果に一夜にして劇的な変化があるとは期待しないでください。しかし、今後数か月で、投稿固有のページでのクロールと検索結果の減少が見られ、これにより、サイトの新しいトピックや、ドメインのクロール予算の制約によりまだインデックス作成されていないコンテンツにより多くのクロール時間が費やされるようになります。
「いいね!」 32
rrit
(Ayke)
2022 年 2 月 21 日午後 11:29
4
TL;DR: 非正規ページをブロックせず、\u003clink rel=\"canonical\" … \u003e を介して正しいURLに誘導してください。それが本来の用途です。
この機能は、長期的にはSEOのリンク構築に悪影響を与える可能性があります。
トピック内の回答へのすべてのディープリンクが、現在 noindex ページになっています。Google はこれを好むでしょうか?
実際には、トピックURLに常にcanonicalタグを指すようにすれば、X-Robots-Tag: noindex を追加することなく、回答へのディープリンクページに対しても完璧に機能するはずです。
Google は、ディープリンクされた回答ページを最初にクロールした際に、ページURL(トピック内の回答)がcanonical-urlと一致しないことを認識し、canonical-url(トピック)のみをクロールすることを決定します。
このトピック/回答のディープリンクを行うすべてのリンクに \u003ca rel=\"nofollow\" …\u003e を追加してもよいですか? 編集:いいえ、Search engines now blocked from indexing non-canonical pages - #9 by j127 を参照してください。
これにより、検索エンジンの貴重で限られたクロールバジェットをさらに節約できる可能性があります。
検索エンジンは、最初にリンクを抽出せず、URLへの呼び出しも行いません。URLを呼び出すと、X-Robots-Tag: noindex HTTPヘッダーを持つ応答が返され、そのURLが検索エンジンの内部「noindex」リストに追加されることで応答が「破棄」されます。
RSSフィードURLにnofollowを追加することで、さらにクロールバジェットを節約できます。
main ← rr-it:feature/seo-rss-nofollow
opened 03:03PM - 21 Feb 22 UTC
The urls of RSS-feeds of topics and categories are already excluded by `robots.t… xt`.
But without `rel="alternate nofollow"` the search engine still extracts the url itself of a RSS-feed from the `<link rel="alterante" …>` tag inside the header of a topic or category page. Afterwards the search engine evaluates that this grabbed RSS-feed url is excluded by robots.txt and adds it to a 'noindex'-list.
With this change the RSS-feed url stays completely unknown to the search engine: it is neither extracted in the first place nor added to the 'noindex'-list afterwards. Thereby the number of topic-urls the search-engine has to handle gets halfed.
「いいね!」 5
arkklo
(Ark)
2022 年 2 月 22 日午前 4:34
5
@rritさんの提案に全面的に同意します 。
トピック内のサブページ/投稿は、ブロックするのではなく、元の正規URLを指す方が良いでしょう。
noindexを追加する代わりに、トピック内の各返信にnofollowタグを追加することはできますか?
「いいね!」 1
Falco
(Falco)
2022 年 2 月 22 日午前 4:47
6
まさにその通りにすでに機能していますが、どういう意味かよくわかりません。
では、ここのURLを更新する必要があるということでしょうか?
SELECT p.user_id, COUNT(DISTINCT st.id) AS solutions
FROM discourse_solved_solved_topics AS st
JOIN posts AS p
ON p.id = st.answer_post_id
AND COALESCE(st.created_at, :since) > :since
AND p.deleted_at IS NULL
JOIN topics AS t
ON t.id = st.topic_id
AND t.archetype <> 'private_message'
AND t.deleted_at IS NULL
JOIN users AS u
ON u.id = p.user_id
WHERE u.id > 0
AND u.active
AND u.silenced_till IS NULL
AND u.suspended_till IS NULL
GROUP BY p.user_id
)
UPDATE directory_items di
SET solutions = x.solutions
FROM x
ページ番号と投稿アンカーを持つ正規URLを使用するように?
これらはすでにrobots.txtでブロックされていますが、良いアイデアですね!
これも良いアイデアのように聞こえます!
「いいね!」 4
arkklo
(Ark)
2022 年 2 月 22 日午前 5:04
7
おっしゃる通りです。申し訳ありません。時々、自分の考えに迷ってしまうことがあります。
簡単な質問ですが、Discourseをv2.9にアップデートすれば、この機能はデフォルトで利用可能になりますか?
「いいね!」 4
j127
2022 年 2 月 22 日午前 5:14
8
デフォルトでこの機能が有効になるべきではないと思います。たとえ短時間であっても、交通の観点からは危険であり、今アップデートした人は予期せぬ事態に見舞われる可能性があります。
canonical タグは、Google がその問題に対処するために推奨している方法であり、すでに機能しているようです。canonical タグで奇妙なことをすると、Google で奇妙な問題が発生する可能性があり、noindex の間違いは回復が困難になる可能性があります。
「いいね!」 2
j127
2022 年 2 月 22 日午前 5:20
9
投稿の前半には同意しますが、内部の nofollow は理想的ではないと思います。内部リンクは、サイト上のどのページが重要かを検索エンジンに伝えるのに役立ちます。Googleは、以前に見たことを知っているため、すべてのリンクをたどるわけではありません。たとえば、example.com/t/1234/5 のようなURLを見て、すでにクロールしており、その canonical URL が example.com/t/1234 であることを知っている場合、非正規版を複数回訪問するためにコンピューティングリソースを無駄にすることはまずないでしょう。
「いいね!」 3
rrit
(Ayke)
2022 年 2 月 22 日午前 10:09
10
外部リンクからリンクされているURLの「noindex」を削除する
「回答」とは、トピック内の「投稿」を意味します。
外部ドメインからの投稿へのディープリンク(例:forum.example.com/t/example-topic/5/11)には、現在 X-Robots-Tag: noindex というHTTPヘッダーが付いています。このHTTPヘッダーを再度削除することを提案します。
canonical タグについては、投稿アンカー(…/t/example-topic/1234/5 の最後の数字)を含むURLをどこにも使用しないことを提案します。正規URLは常にトピックURL自体(…/t/example-topic/1234)を指すべきです。すでにそのように実装されていると思います。
対象URLが canonical タグによって「リダイレクト」されている場合、検索エンジン用のリンクを書き換える
非常に良い指摘です。ここで rel="nofollow" を追加しない方が良いでしょう。
Discourseにはクローラー用の特別なビューがあります。クローラービューに関する新しい提案です。
投稿URL(example.com/t/1234/5)を指すすべての内部リンクを、対応するトピックURL(example.com/t/1234)を指すように変換します。
意図:canonical タグによってすでに「リダイレクト」されている追加URLを、検索エンジンに通知しないようにします。
このような投稿へのリンクが見つかる場所:
ユーザーコンテンツに手動で追加されたリンク
自動生成されたリンク:
引用
トピックの最初の投稿:「インバウンド追跡リンク」(他のトピックから)
トピックの最初の投稿:「選択された回答」
トピックの最初の投稿 - トピックマップを開く:「トピックリンク」/「いいねしたリンク」
余談:GoogleはこれらのURLをどのように見つけるのか?
検索エンジン向けの「インバウンド追跡リンク」
まさにこの理由から、トピックの最初の投稿にある自動生成された「他のトピックからのインバウンド追跡リンク」も検索エンジンから見えるようにすべきです。
現在、これらの「インバウンド追跡リンク」はクローラービューにありません。 編集:すでにクローラービューに含まれています。
ただし、トピックURLではなく投稿URLを指しています(HTMLソースを参照)
<div class="crawler-linkback-list" itemscope="" itemtype="http://schema.org/ItemList">
<div itemprop="itemListElement" itemscope="" itemtype="http://schema.org/ListItem">
<a href="https://meta.discourse.org/t/removing-the-2-3-4-etc-links-for-each-reply-within-a-topic-url/209648/26" itemscope="" itemtype="http://schema.org/DiscussionForumPosting" itemprop="item">
<meta itemprop="url" content="https://meta.discourse.org/t/removing-the-2-3-4-etc-links-for-each-reply-within-a-topic-url/209648/26">
<span itemprop="name">Removing the /2, /3, /4, etc links for each reply within a topic URL</span>
</a>
<meta itemprop="position" content="2">
</div>
</div>
「いいね!」 3
Krischan
(Krischan)
2022 年 2 月 22 日午前 10:54
11
これは非常に重要な点です。すべてのページがインデックスに登録されることと、それらのページに関連性の高いランキングを獲得することは別の問題です。私の経験(大手パブリッシャーサイトでの経験)では、これを達成するための鍵は、スマートな内部リンクです。
「いいね!」 1
mstm
(mstm)
2022 年 2 月 22 日午後 5:48
12
今朝アップデートしたのですが、非正規ページのインデックス作成を有効にすることをお勧めしますか?
indexing more worse にしたくありません。
「いいね!」 1
Falco
(Falco)
2022 年 2 月 22 日午後 5:57
13
OPの投稿日以降にサイトをアップデートした方へ。
新しいヘッダーがそれらのページのクロール時間を短縮し、常に正規URLが設定されていることを示すデータがあります。
しかし、それらのページはそもそもクロールされることを意図していません。URLを含むメタデータはトピックレベルで設定されており、重複コンテンツであるため、Googleにポストレベルをクロールしてほしくありません。
なるほど、ここでは何も変更する必要はありませんね。
実行時にそれを行うとCPU負荷が高すぎる可能性があり、各ポストの2つのバージョンを保存するとディスク容量を圧迫します。
私たちのデフォルト設定は常に推奨されるものです。しかし、デフォルトがサイトにとって理想的ではないと感じる方のために、サイト設定を維持・公開しており、それ以外を選択できるようにしています。
「いいね!」 5
mstm
(mstm)
2022 年 2 月 22 日午後 6:11
14
Falco:
デフォルトは常に推奨されるものです。
それなら、推奨通りにします。
ありがとうございます。
「いいね!」 2
mstm
(mstm)
2022 年 2 月 22 日午後 6:23
15
これで最後です。もう邪魔しません
このようなリンクが含まれる sitemap_recent.xml に問題が発生する可能性はありますか?
https://meta.discourse.org/t/category-moderator-improvements/158628?page=2
「いいね!」 1
Falco
(Falco)
2022 年 2 月 22 日午後 6:29
16
その例は正規ページなので、OPで概説されている変更の影響は一切受けません。
「いいね!」 2
rrit
(Ayke)
2022 年 2 月 22 日午後 8:19
17
外部リンク から投稿URLへのリンクがある場合、大きな違いが見られます。
# A:
外部ドメイン
|
|--(リンクジュース)--|> 投稿URL
|
|__/ クローリング: \---> 投稿URLはインデックスされず、
\ ヘッダー noindex / リンクジュースはほとんど失われる
# B:
外部ドメイン
|
|--(リンクジュース)--|> 投稿URL
|
|__/ クローリング: \__|---> 投稿URLはインデックスされない
\ 回答のcanonical / |---> トピックURLは(いずれにせよ)インデックスされる
リンクジュース転送付き
これは、How to Submit a Question for Google SEO Office Hours | Google Search Central | Google SEO Office hours | Google for Developers で取り上げるべきです。
「いいね!」 1
Canapin
(Coin-coin le Canapin)
2022 年 2 月 22 日午後 9:44
18
SEOに関しては私のような初心者にとって、これはGoogle検索結果でわずかな増加/利益につながる可能性のあるSEOの改善を意味しますか?
「いいね!」 3
Falco
(Falco)
2022 年 2 月 22 日午後 10:26
19
はい、それが目標です!
数ヶ月にわたり、テックニュースコミュニティでこの変更をテストしたところ、匿名ページビューの大幅なピーク・トゥ・ピークの増加が見られました。私たちの最終目標は、常にすべてのDiscourseコミュニティをあらゆる面でより健全にすることです。
「いいね!」 6
rrit
(Ayke)
2022 年 2 月 22 日午後 11:47
20
この効果は、Google Search Consoleのレポート「設定」→「クロール」→「クロール統計 」で確認できますか?
「いいね!」 1
rrit
(Ayke)
2022 年 2 月 23 日午後 11:00
21
考慮すべき点…
A. クロールの削減
B. コンテンツのバージョンは2つにしない
C. canonicalタグを使用する
D. nofollowを使用しない
E. noindexを使用しない
…そして内部リンクを…
rrit:
このような投稿へのリンクが見つかる場所:
ユーザーコンテンツに手動で追加されたリンク
自動生成されたリンク
引用
トピックの最初の投稿:「インバウンド追跡リンク」(他のトピックから)
トピックの最初の投稿:「選択された回答」
トピックの最初の投稿 - トピックマップを開く:「トピックリンク」/「いいねしたリンク」
…最良の妥協点を得るために、以下の実装を提案します:
HTTPヘッダー X-Robots-Tag: noindex を追加しない。
– [E] を考慮 –
canonicalタグは常にトピックURLを指すようにする。
– クロールの削減 [A] と [C] を考慮 –
クローラービューのみ: 自動生成されたリンクを、最初の投稿のすべてのリンク(「他のトピックからのインバウンド追跡リンク」および「トピックマップを開く:トピックリンク/いいねしたリンク」)で、投稿URLではなくトピックURLを常に指すように変換する。
– クロールの削減 [A] と [D] を考慮するが、[B] は意図的に無視する –
[B]について:CPU費用はクローラーの訪問のみにかかり、正規表現置換を実行して、数字2つで終わる内部URLの最後の数字を削除します。例: …/t/example-topic/1234/5 → …/t/example-topic/1234。これは、最初の投稿の「他のトピックからのインバウンド追跡リンク」および「トピックマップを開く」の範囲内に限定されます。
すべてのビュー: 引用およびユーザーコンテンツに手動で追加されたリンクに、内部 nofollow を追加する。
– クロールの削減 [A] と [B] を考慮するが、[D] はわずかに無視する –
[D]について:重要なリンクはすでに「トピックマップを開く:トピックリンク/いいねしたリンク」セクションに自動的に複製されています [上記3を参照]。また、ほとんどの引用は通常、トピック内に留まります。
内部リンクに関するいくつかのアイデア
Googleは次のように述べています:How to Specify a Canonical with rel="canonical" and Other Methods | Google Search Central | Documentation | Google for Developers
そしてGoogleは次のように述べています:SEO Link Best Practices for Google | Google Search Central | Documentation | Google for Developers
したがって、Discourseは内部リンクを次のように設定する可能性があります:
<a href="/t/example-topic/1234" routerLink="/t/example-topic/1234/5">…</a>
Googleにとって、リンクは正規のトピックURL …/1234 に直接移動します。そしてGoogleはこのリンク構文から投稿URL …/1234/5 について知ることはありません。
ユーザーナビゲーションについては、Emberアプリに追加のJavaScriptを配置することで対応できます:
例: href を routerLink に置き換えます。
「いいね!」 2
素晴らしい改善ですね!@Falco と Discourse チームの皆さん、実現してくれてありがとうございます!
「いいね!」 3