2026年10月6日

2026年10月6日

WordPressのURLをwwwあり・なしに統一する方法

はじめに

「www.example.comとexample.comが両方アクセスできて重複コンテンツになっている」「wwwなしに統一したいがリダイレクトが効かない」「HTTPSとHTTPが混在している」——URLの正規化はSEOと信頼性の基盤となる設定です。

症状・原因

WordPressのサイトURLと管理画面URLが一致していない場合、またはDNSでwwwありとなしの両方が解決できる場合、重複コンテンツ問題が発生します。canonicalタグだけでは不十分で、301リダイレクトで統一する必要があります。

解決手順

ステップ1:WordPressの管理画面でURLを設定する

管理画面 → 設定 → 一般 の設定:

wwwなしに統一する場合:
- WordPressアドレス(URL): https://example.com
- サイトアドレス(URL):    https://example.com

wwwありに統一する場合:
- WordPressアドレス(URL): https://www.example.com
- サイトアドレス(URL):    https://www.example.com

※ 管理画面でのURL変更後はログインできなくなる場合があります。
  その場合はwp-config.phpで直接設定してください。
// wp-config.php: URLを直接定義(管理画面でのURL変更でログインできなくなった場合)
define( 'WP_HOME',    'https://example.com' );
define( 'WP_SITEURL', 'https://example.com' );

ステップ2:.htaccessでwwwなしにリダイレクトする

# .htaccess: wwwなし(example.com)に統一するリダイレクト
<IfModule mod_rewrite.c>
RewriteEngine On

# HTTPS + wwwなしに強制(wwwあり → wwwなしへ301リダイレクト)
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L]

# HTTP → HTTPSリダイレクト
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

# WordPress標準のリライトルール
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

ステップ3:.htaccessでwwwありにリダイレクトする

# .htaccess: wwwあり(www.example.com)に統一するリダイレクト
<IfModule mod_rewrite.c>
RewriteEngine On

# wwwなし → wwwありへ301リダイレクト
RewriteCond %{HTTP_HOST} ^(?!www\.)(.+)$ [NC]
RewriteRule ^ https://www.%1%{REQUEST_URI} [R=301,L]

# HTTP → HTTPSリダイレクト
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

# WordPress標準のリライトルール
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

ステップ4:Nginxでリダイレクトを設定する

# Nginx: wwwなしに統一する設定(/etc/nginx/sites-available/example.com)

# wwwあり → wwwなしへリダイレクト
server {
    listen 80;
    listen 443 ssl;
    server_name www.example.com;

    ssl_certificate     /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    return 301 https://example.com$request_uri;
}

# HTTP → HTTPSリダイレクト
server {
    listen 80;
    server_name example.com;
    return 301 https://example.com$request_uri;
}

# メインのサーバーブロック
server {
    listen 443 ssl http2;
    server_name example.com;

    ssl_certificate     /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    # HSTS(HSTSを設定するとHTTPに戻れなくなるので注意)
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

    root /var/www/html;
    index index.php;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

ステップ5:Google Search Consoleで正規URLを設定する

Google Search Console での設定手順:

1. https://search.google.com/search-console にアクセス
2. 「プロパティを追加」→「ドメイン」または「URLプレフィックス」で登録
   - ドメインプロパティ(推奨): example.com → wwwあり・なし両方カバー
   - URLプレフィックス: https://example.com/ → 正規URLのみ

3. DNSTXTレコードまたはHTMLファイルでサイト所有権を確認

4. 正規URLを使ったサイトマップを送信:
   - サイトマップ → サイトマップのURLを追加
   - https://example.com/wp-sitemap.xml を送信

5. カバレッジレポートで重複コンテンツがないか確認
// functions.php: canonicalタグで正規URLを明示(rel=canonicalでダブルカバー)
add_action( 'wp_head', function() {
    if ( is_singular() ) {
        echo '<link rel="canonical" href="' . esc_url( get_permalink() ) . '">' . "\n";
    } elseif ( is_home() || is_front_page() ) {
        echo '<link rel="canonical" href="' . esc_url( home_url( '/' ) ) . '">' . "\n";
    }
}, 1 );
// ※ Yoast SEOなどのSEOプラグインがある場合は重複するため不要

注意事項

  • 301リダイレクトを設定する前に必ずバックアップを取ってください。.htaccessの記述ミスでサイト全体にアクセスできなくなる場合があります。
  • wwwあり→なしへの変更後、Google Search Consoleで変更を通知し、Googleにインデックスの更新を促してください。検索順位が一時的に変動することがあります。
  • HSTSを設定するとブラウザがHTTPSを強制キャッシュするため、後でHTTPに戻すことが非常に困難になります。SSL証明書の自動更新(Let's Encrypt + Certbot)が確実に動作しているか確認してから設定してください。

まとめ

URL統一は「管理画面→設定→一般でサイトURLを確定→.htaccessでwwwと非wwwの301リダイレクト→HTTPSリダイレクトを追加→wp-config.phpでWP_HOME/WP_SITEURLを定義→Google Search Consoleでドメインプロパティを登録してサイトマップ送信」の流れで整備します。関連記事:WordPressをHTTPSに移行する方法、WordPressのXMLサイトマップを設定する方法。

お気軽にご相談ください

お見積りへ お問い合わせへ
▲