SEOの専門家が私のサイトをテストしていて、URLに特殊文字:
が含まれていることに気付きました。グーグルは:
を含むURLを:
と%3A
の2つの別々のURLとして解釈するため、重複したコンテンツが作成されると彼は言いました。彼は正しいですか?
これはあなたの「SEOエキスパート」からの嘘/誤解であると思われます(そのような役割はIMOには存在しません)。本質的に%3A
と:
はまったく同じものであり、1つは単にエンコードされ、まったく同じことを意味します。URLを読み取るものはすべてそれを知っています。
そうしないと、英数字以外の文字はすべてURLエンコードされたエンティティを持っているため、コンテンツが重複する可能性があると主張できます(例:%2d
は-
)。
IE:
http://webmasters.stackexchange.com/questions/31499/seo-whould-i-use-in-url
そして
http://webmasters.stackexchange.com/questions/31499/seo%2dwhould%2di%2duse%2din%2durl
両方とも同じ場所に解決されますが、-
は後者でURLエンコードされており、ブラウザ/検索エンジンで尊重される点が異なります。
あなたの「SEOエキスパート」は嘘をついている野郎かもしれませんが、これはおそらく理由ではありません。彼はこれについて絶対に正しい。これは、URL構築におけるほとんど知られていないEdgeケースです。
RFC 3986 は、URL形式の公式定義であり、URLのエンコードおよびデコード方法に関するルールです。エラーを回避し、インターネットの残りの部分と相互運用できるように、URLパーサーはできる限りこれに従ってください。これには、ルールを誤って適用すると、特定のリソースを実際にクロールまたはインデックス付けできない検索エンジンが含まれます(たとえば、URLを台無しにしたり、アプリケーションがURLまたはクエリを誤って解釈するために404を取得します)文字列)。
RFCはhowにルールを与えて、エンコードとデコードのパーセントを行います。これはよく知っていますが、whenも説明しています。はエンコードとデコードを行い、to which characters。
検索エンジンnormalizeURL(それらを比較できるように)が、dereferenceではないことに注意してください。 WebサーバーはURLを逆参照して、ドキュメントを見つけ、デコードされたデータをWebアプリケーションに渡します。 URLが正規化されると、パーセントでエンコードされた文字のサブセットのみがデコードされます。参照解除されると、allがデコードされます。
特に、2つのURLの等価性(セクション6のすべて)を比較する方法と、その前にパーセントデコードする必要のある文字を指定します(セクション6.2.1および6.2.2)。ここで、URLの等価性を比較する前にデコードされるonly文字は、いわゆる非予約文字であることがわかります。これらは(セクション2.3で)「大文字と小文字、10進数、ハイフン、ピリオド、アンダースコア、およびチルダ」として定義されています。エンコードのパーセントは、preventブラウザー、検索エンジンなどがURLの特殊文字を誤って解釈することを意図していますが、URLで予約されていない文字には特別な意味がないため、誰でもいつでもデコードできます。
したがって、2つのURLの等価性が比較される前に、%3A
はnotコロン:
にデコードされます。 コロンには、URLのパスコンポーネントでの使用に適用されるいくつかの異常なルールがあります(セクション4.2で説明)。relativeURLのfirstパスコンポーネントには表示できません(ただし、後続のコンポーネントでは許可されます) URLスキームと混同される可能性があります。
最初のパスコンポーネントとしてコロンを使用して有効な相対URLを構築するには、一部の時間とそれ以外をエンコードせず、そのようなすべての相対URLの前に./
を付けるか、相対URLを完全に無視する必要があります(通常は何が起こるかはわかりませんが、相対URLは思っているよりもはるかに一般的です)。
URL仕様のこの部分では何らかの明確化を使用できますが、状況によっては、URLでコロンを使用する場合は、常にエンコードすることを強くお勧めします。これにより、URLの同等性に関するあいまいさを排除し、相対URLを使用している場合でもこのEdgeのケースにヒットしないようにします。