wwwあり・なしを統一する — 入口は4つある。自分のサイトを測ってから直す

wwwあり・なしを統一する — 入口は4つある。自分のサイトを測ってから直す

先に結論

「先に結論」の内容を図にまとめたもの

wwwの有無だけの問題ではありません。 http / https と組み合わせると、入口は4通りあります。 全部が1つの正規URLに着地していないと、同じ内容が複数のURLに存在することになります。

表1:4つの入口
wwwなしwwwあり
httphttp://example.com/http://www.example.com/
httpshttps://example.com/https://www.example.com/

やることは3つです。

表2:やること
内容
1. 測る4つの入口がどこに着地するかを実際に確かめる(詳しく)
2. 寄せる正規URL以外から301で転送する(詳しく)
3. 揃えるrel="canonical"・サイトマップ・内部リンクを正規URLに統一する

Search Consoleの「優先ドメイン」の設定を案内している解説がありますが、 その設定は2019年に廃止されています(詳しく)。 いま探しても画面にありません。

入口は4つある

「入口は4つある」の内容を図にまとめたもの

組み合わせを数える

「wwwあり・なしの統一」という言い方だと2択に見えますが、実際には掛け算になります。

表3:入口が増える要素
要素通り例
ホスト名2example.com / www.example.com
プロトコル2http / https
ここまでで4通り
末尾スラッシュ(×2)/about / /about/
index.html の有無(×2)/ / /index.html

この記事で扱うのは最初の4通りです。 末尾スラッシュと index.html も同じ考え方で潰せますが、 まず4通りが1つに着地していることを確かめるのが先です。

両方を200で出してはいけない

サーバーの設定で、wwwありとwwwなしの両方に同じディレクトリを割り当てる書き方があります。 Apacheなら ServerAlias を足すだけです。

<VirtualHost *:80>
    ServerName  www.example.com
    ServerAlias example.com          # ← これで両方が同じ内容を返す
    DocumentRoot /var/www/example
</VirtualHost>

これは「動く」設定ですが、やってはいけない形です。 どちらのホスト名でも 200 が返るので、 検索エンジンから見ると同じ内容のページが2つのURLに存在します。

表4:両方200で出した場合に起きること
起きること内容
評価が分かれる被リンクが2つのURLに分散する
どちらが出るか決まらない検索結果に出るURLが安定しない
計測が割れるアクセス解析で別サイト扱いになる
Cookieが共有されない場合があるログイン状態がホスト名をまたがない

ServerAlias を使うこと自体は間違いではありません。 受け付けたうえで301で片方に転送するなら、むしろそれが正しい形です。 受け付けて、そのまま返してしまうのが問題です。

Search Consoleの優先ドメイン設定は廃止された

「Search Consoleの優先ドメイン設定は廃止された」の内容を図にまとめたもの

「Search Consoleで優先ドメインを設定する」という手順を載せている解説が、いまも残っています。 その設定は2019年6月に廃止されました。

「Googleは設定の一つである優先ドメインを廃止します」
「Search Consoleの既存の優先ドメイン構成は使用されなくなります」
— 優先ドメインの設定を廃止(Google Search Central Blog・2019年6月18日)

「設定してあるから大丈夫」も成り立ちません。 既存の設定も使われなくなった、と書かれています。

同じ記事で、代わりの方法が4つ挙げられています。

表5:Googleが挙げている代替手段
方法性質
廃止するURLに 301 リダイレクト最も強い。利用者も正規URLに着地する
rel="canonical" リンクタグHTMLに書く。転送はしない
rel="canonical" HTTPヘッダーHTML以外(PDF等)でも使える
サイトマップ補助。これだけでは弱い

基本は301です。 rel="canonical" は「こちらが正規です」と伝えるだけで、 利用者は非正規のURLに留まります。 301なら、人もクローラーも同じURLに着地します。

まず自分のサイトを測る

「まず自分のサイトを測る」の内容を図にまとめたもの

測り方

設定を書く前に、いまどうなっているかを確かめます。 4つの入口それぞれが、どこに、何回の転送で着地するかを見ます。

# 転送を追いかけて、最終URLとホップ数を出す
for u in "http://example.com/" "http://www.example.com/" \
         "https://example.com/" "https://www.example.com/"; do
  curl -sS -o /dev/null -L --max-time 20 \
    -w "%{num_redirects} hops  $u → %{url_effective} (%{http_code})\n" "$u"
done

転送の中身まで見るなら、1段ずつ追います。

# 1段目だけ見る(-L を付けない)
curl -sS -o /dev/null -w "%{http_code} → %{redirect_url}\n" "http://www.example.com/"

ホップ数に差が出た

実際に測ると、同じ「wwwなしに統一」でも構成が違うことが分かります。

表6:転送の連鎖(2026-10-25に実測)
構成連鎖ホップ
2段階http://www. →(301)→ https://www. →(301)→ https://2
1発http://www. →(301)→ https://1

2段階になるのは、HTTPS化の転送とホスト統一の転送を別々に書いているからです。 大手のサイトでも2段階が普通にあります。実際に測った例を挙げます。

表7:よく知られたサイトの連鎖(実測)
入口連鎖ホップ
http://www.github.com/→ https://www.github.com/ → https://github.com/2
http://wikipedia.org/→ https://wikipedia.org/ → https://www.wikipedia.org/2

2ホップが致命的なわけではありません。 ただし転送1回ぶんの往復は確実に遅くなるので、1発で寄せられるならそのほうがよいです。 書き方は後述します。

1段目が302になっていないか

ホップ数より大事なのがこちらです。 手元で運用しているサイト10件の、http:// からの1段目を測りました。

表8:10サイトの1段目(2026-10-25に実測)
1段目のステータス件数評価
301(恒久的)8正しい
302(一時的)2直したほうがよい

HTTPS化の転送は、恒久的なものです。 http:// に戻す予定はありません。それなのに 302 で返していると、 「一時的なので、元のURLを正規として扱ってください」と言っていることになります。

表9:301と302の違い
301302
意味恒久的に移動した一時的にこちらを見て
正規URLの扱い転送先が正規転送元が正規のまま
ブラウザのキャッシュ記憶する記憶しない(毎回聞きに行く)
HTTPS化・www統一にこちらを使う使わない

10件中2件が302でした。 どちらも「HTTPS化はできている」ので、画面を見ているだけでは気づきません。 curl で1行測るだけで分かります。一度は確認してください。

末尾スラッシュも同じ問題

「末尾スラッシュも同じ問題」の内容を図にまとめたもの

4つの入口を潰したら、次に出てくるのが末尾スラッシュです。 /docs/Web と /docs/Web/ は、URLとしては別物です。 どちらでも同じ内容が200で返るなら、さっきと同じ問題が起きます。

実際に測ると、きちんと寄せているサイトが分かります。

表10:末尾スラッシュの扱い(2026-10-25に実測)
URL結果
developer.mozilla.org/ja/docs/Web200(こちらが正規)
developer.mozilla.org/ja/docs/Web/301 → スラッシュ無しへ
docs.github.com/ja200(こちらが正規)
docs.github.com/ja/301 → スラッシュ無しへ

どちらも「スラッシュ無しが正規」と決めて、有りを301で寄せています。 逆に「有りを正規」にしているサイトもあります。どちらでも構いません。決まっていることが大事です。

ただし、ディレクトリを配信している場合は話が別です。 /about/ のようにディレクトリへのアクセスは、 Webサーバーがスラッシュ付きに301で寄せるのが既定の動作です。 これを無理に変えると、サーバー側の既定と喧嘩して無限ループの原因になります。 ディレクトリはスラッシュ有り、拡張子なしの単独URLはスラッシュ無し、と使い分けるのが素直です。

確認は、さっきと同じ curl で足ります。 代表的なページを数本、両方の形で叩いてみてください。 片方が301で寄っていれば正常、両方とも200なら直す対象です。

どちらに寄せるか

「どちらに寄せるか」の内容を図にまとめたもの

SEO上の有利・不利はありません。どちらでも構いません。 決める材料は別のところにあります。

表11:選ぶときの材料
条件向き理由
すでに運用していて、被リンクが片方に多い多いほうこれが最優先。転送でも引き継がれるが、わざわざ減らす理由がない
サブドメインを多用するwwwありCookieのスコープを分けやすい
URLを短く見せたいwwwなし名刺や広告での見栄え
新規で、こだわりがないどちらでも決めて、二度と変えないことのほうが大事

1行目を先に確認してください。 すでに公開しているサイトなら、外部からリンクされている側に寄せるのが素直です。

設定を書く

「設定を書く」の内容を図にまとめたもの

HTTPS化とホスト統一を1つのルールにまとめると、1ホップで済みます。

# Apache(.htaccess):www なし + https に、1発で寄せる
<IfModule mod_rewrite.c>
  RewriteEngine On

  # https でない、または www が付いている場合はまとめて転送
  RewriteCond %{HTTPS} !=on [OR]
  RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
  RewriteRule ^ https://example.com%{REQUEST_URI} [R=301,L]
</IfModule>

Nginxなら、転送専用のサーバーブロックを置きます。

# Nginx:http と www を1発で https・www なしへ
server {
    listen 80;
    listen 443 ssl;
    server_name www.example.com;
    # http の非www もここで受ける
    return 301 https://example.com$request_uri;
}

server {
    listen 80;
    server_name example.com;
    return 301 https://example.com$request_uri;
}

server {
    listen 443 ssl;
    server_name example.com;
    root /var/www/example;
    # 本体の設定
}
表12:書くときの要点
要点理由
R=301 にする恒久的な転送。302 だと正規URLが移らない(表9)
%{REQUEST_URI} を付ける付け忘れると全ページがトップに飛ぶ
条件を [OR] でまとめるHTTPS化とホスト統一を1ホップにできる
www側にもHTTPSの証明書が要るhttps://www. で来た人を受けるため。忘れると警告が出る
転送先をハードコードする正規ホストを1か所に書く。変数で組むと事故りやすい

4行目を見落としがちです。 「wwwなしに統一するから、www側は要らない」と思いがちですが、 転送するためには、まず https://www. で接続できなければいけません。 証明書が www を含んでいないと、転送する前に警告画面が出ます。 無料の証明書でも、両方のホスト名を入れて取得してください。

踏みやすい罠

「踏みやすい罠」の内容を図にまとめたもの
表13:よくある事故
症状原因
全ページがトップに飛ぶ%{REQUEST_URI} を付けていない
無限リダイレクト転送先でも条件が成立している。[OR] の組み方を見直す
https://www. で警告が出る証明書に www が入っていない
一度直したのに古い方に飛ぶ301がブラウザに記憶されている。別のブラウザか履歴を消して確認する
POSTが壊れる301はPOSTをGETに変える(詳しく)。APIのパスは転送対象から外す
内部リンクが古いホスト名のまま転送はされるが、毎回1ホップ余計にかかる
サイトマップが古いホスト名クローラーが毎回転送を踏む

最後の2行は、転送を書いたあとに残りやすい宿題です。 転送があるので動いてはいますが、毎回1ホップぶん遅くなります。 rel="canonical"・サイトマップ・内部リンクも、正規URLに書き換えてください。

AIに任せるときの注意

「AIに任せるときの注意」の内容を図にまとめたもの
表14:AIへの頼み方
頼むこと向くか理由
curl の出力を貼って「どこに着地している?」向く連鎖を読むだけ
「HTTPS化とwww統一を1つのルールにまとめて」向く定型。条件の組み方は機械的
いまの設定を貼って「無限ループの原因は?」向く条件の重なりは読めば分かる
「wwwあり・なしの統一方法を教えて」向かない廃止済みのSearch Consoleの設定が返ってくる
「どちらに寄せるべき?」向かない被リンクがどちらに多いかで決まる(表11)。一般論では決まらない
設定ファイルを直接書き換えさせる向かない書き損じると全ページが落ちる。控えを取って自分で適用する

判定の目安です。答えに「Search Consoleで優先ドメインを設定」が出てきたら、情報が古いと思ってください。

よくある質問

wwwはありとなし、どちらがSEOに有利ですか

差はありません。どちらかに統一されていることが大事です。 すでに運用しているなら、被リンクが多いほうに寄せるのが素直です(表11)。

Search Consoleの優先ドメインが見つかりません

2019年6月に廃止されました(Google公式)。 既存の設定も使われなくなった、と明記されています。301で寄せてください。

両方のURLで表示できていれば問題ないのでは

問題があります。同じ内容が2つのURLに存在する状態になり、 評価も計測も分かれます(表4)。 受け付けるのは構いませんが、受け付けたら301で寄せてください。

canonicalタグだけではだめですか

Googleが挙げている手段の1つではあります(表5)。 ただし転送はしないので、利用者は非正規のURLに留まります。 301なら人もクローラーも同じURLに着地します。301が基本です。

302ではだめですか

だめです。302は「転送元が正規のまま」という意味になります(表9)。 HTTPS化やwww統一は恒久的な変更なので301です。 実測した10サイト中2件が302でした。画面を見ているだけでは気づきません。

ホップ数は少ないほうがいいですか

少ないほうがいいですが、2ホップが致命的ではありません。 実測した範囲では、よく知られたサイトでも2ホップでした(表7)。 HTTPS化とホスト統一を1つのルールにまとめれば1ホップになります(詳しく)。

全ページがトップページに飛びます

転送先に %{REQUEST_URI} を付けていません(表13)。 パスを引き継がないと、どのページから来てもトップに着地します。

https://www. で証明書の警告が出ます

証明書に www が含まれていません。 転送するにも、まず接続できる必要があります(表12)。 両方のホスト名を入れて取り直してください。

直したのに古いほうに飛びます

301がブラウザに記憶されています。 別のブラウザか、シークレットウィンドウで確認してください。 curl なら記憶しないので確実です。

まとめ

転送の連鎖とステータスコードは、2026年10月25日に curl で実際に取得したものです (10サイトの内訳はサイト名を伏せています)。設定は変わります。 サーバーの設定を変更する前に必ず控えを取り、本番ではないところで試してください。 .htaccess を書き損じると全ページが表示できなくなります。