PCサイトとスマホサイトのurlが分かれている場合(フルレスポンシブでない) の紐付け link rel="canonical" の使用例
例えば、PC用サイトhttps://www.hoge.comがあるとて
スマホサイトがhttps://www.hoge.com/sp/
だった場合に
それぞれのhead内の link rel="canonical" をどのように書くべきか?
現象だけ言うと・・・
2つのURLの関係を link タグ、rel="canonical" 要素、rel="alternate" 要素で伝える
参考:https://developers.google.com/search/mobile-sites/mobile-seo/separate-urls?hl=ja
参考:https://webmaster-ja.googleblog.com/2013/05/5-common-mistakes-with-relcanonical.html
パソコン用のページのheadには
<link rel="alternate" media="only screen and (max-width: 640px)" href="https://www.hoge.com/sp/">
スマホ用のページのheadには
<link rel="canonical" href="https://www.hoge.com">
でよい。
なお、上記の場合は、
当たり前ですが
.htaccessにユーザーエージェント毎に表示サイトを替える記述が必要
.htaccessの記述例
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (iPhone|Android.*Mobile|Windows.*Phone) [NC]
RewriteCond %{QUERY_STRING} !mode=pc
RewriteRule ^$ /sp/ [R,L]
#スマホでtopページ(index.html)に来た場合は/sp/へ移動
RewriteCond %{HTTP_USER_AGENT} (iPhone|Android.*Mobile|Windows.*Phone) [NC]
RewriteCond %{QUERY_STRING} !mode=pc
RewriteRule ^index.html$ /sp/ [R,L]
#ページ毎に設定したい場合は、ページ毎指定するのが管理が楽だと思う。
#PCには存在するページがスマホでは存在しない場合とかね。
RewriteCond %{HTTP_USER_AGENT} (iPhone|Android.*Mobile|Windows.*Phone) [NC]
RewriteCond %{QUERY_STRING} !mode=pc
RewriteRule ^/profile/index.html$ /sp/profile/index.html [R,L]
#もしスマホサイトにパソコンでアクセスしたらPCサイトに移動する
#要はパソコンでアクセスしたら/sp/を URL からとるって流れ
RewriteCond %{REQUEST_URI} /sp/
RewriteCond %{HTTP_USER_AGENT} !(iPod|iPhone|Android|Windows\ Phone)
RewriteRule ^sp/(.*)$ $1 [R]
RewriteBase /
</IfModule>
これは、PC用サイトhttps://www.hoge.comに対し
スマホサイトがhttps://www.sp.hoge.com
の場合でも同じルールで書くことができる
パソコン用のページのheadには
<link rel="alternate" media="only screen and (max-width: 640px)" href="https://www.sp.hoge.com">
スマホ用のページのheadには
<link rel="canonical" href="https://www.hoge.com">
こちらは、スマホサイトがサブドメインで分かれているため、
.htaccessにユーザーエージェント毎に表示サイトを替える記述はいらない



