この記事はで読むことができます。
当ブログでは商品・サービスのリンク先にプロモーションを含みます。

サイトのURLが「wwwあり」「wwwなし」でバラバラなんだ…。
https://にも統一したいし、URLの最後にindex.htmlが付くのも気になる…。

その悩み、よくわかります。大丈夫、.htaccessファイルを使えばすべて解決できます。サイトの評価を守るためにも、URLは1つに統一(正規化)することが重要です。
サイトを運営していると、URLの表示が統一されていないことに気づくことがあります。これはSEO(検索エンジン最適化)の観点から見ても、あまり良い状態ではありません。
サイトのURLが「wwwあり・なし」で混在している
「http」と「https」の両方でアクセスできてしまう
URLの末尾に「index.html」や「index.htm」が表示される
どのサーバーでどう書けばいいかわからない
この記事では、ウェブサーバーの設定ファイルである「.htaccess」を使って、これらの問題を解決する方法を具体的に解説します。サーバーごとのケースに合わせてコピペで使えるコードを多数紹介するので、初心者の方でも安心です。
- .htaccessによるURL正規化の基本
- 【wwwあり/なし】URLを統一する書き方
- 【index.html/htm】を非表示にする書き方
- エックスサーバー・さくらインターネットなどサーバー別の設定例
.htaccessで行うURL正規化の3つの基本
URLの正規化とは、複数存在するURLを代表の1つにまとめることです。これにより、検索エンジンからの評価が分散するのを防ぎます。今回行う設定は、主に以下の3つです。
1. httpsへの統一:通信を暗号化するhttpsに統一し、セキュリティを向上させます。
2. wwwのあり・なし統一:「www.example.com」と「example.com」のどちらかに統一します。
3. index.html(.htm)の非表示:「example.com/index.html」を「example.com/」のように見せます。
これらの設定を.htaccessファイルに記述することで、サイトにアクセスしてきたユーザーや検索エンジンを、あなたが決めた唯一の正しいURLへ自動的に転送(リダイレクト)させることができます。
【ケース別】コピペで使える.htaccessリダイレクトコード
ここからは、実際のサーバー環境や目的に合わせたコードを紹介します。ご自身の状況に最も近いものを選んで利用してください。
ケース1:エックスサーバーで「wwwあり」に統一(index.html)
まず、ドメイン「example.com」を例に、wwwありのURL(https://www.example.com/
)に統一し、さらにindex.html
を非表示にする設定です。
このコードは、エックスサーバーの環境で標準的に動作します。
<IfModule mod_rewrite.c>
RewriteEngine On
# ① httpからhttpsへのリダイレクト
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# ② wwwなしからwwwありへのリダイレクト
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
# ③ /index.html を / にリダイレクト
RewriteRule ^index\.html$ / [R=301,L]
</IfModule>

コード内のドメイン部分(example.com)を、ご自身のドメイン名に書き換えて使ってくださいね。
ケース2:エックスサーバーで「wwwなし」に統一(index.html)
次に、ドメイン「example.com」のように、wwwなしのURL(例:https://example.com/
)を正規のURLとする場合の設定です。

「wwwあり」でアクセスされたら、「wwwなし」のURLに自動で転送したいんだ。
この場合、②の記述を「wwwあり」から「wwwなし」へ転送するように変更します。以下のコードは「example.com」の例です。
<IfModule mod_rewrite.c>
RewriteEngine On
# ① httpからhttpsへのリダイレクト
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# ② wwwありからwwwなしへのリダイレクト
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]
# ③ /index.html を / にリダイレクト
RewriteRule ^index\.html$ / [R=301,L]
</IfModule>
ケース3:ファイル名が「index.htm」の場合(wwwあり)
サイトによっては、トップページのファイル名がindex.html
ではなくindex.htm
の場合があります。その場合、リダイレクト元の指定を少し変更するだけで対応できます。
ここでは「example.com」を例に、wwwありに統一し、かつindex.htm
を非表示にする設定を見ていきましょう。
<IfModule mod_rewrite.c>
RewriteEngine On
# ① httpからhttpsへのリダイレクト
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# ② wwwなしからwwwありへのリダイレクト
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
# ③ /index.htm を / にリダイレクト
RewriteRule ^index\.htm$ / [R=301,L]
</IfModule>
注目すべきは③の部分です。RewriteRule ^index\.html$
となっていた部分を、RewriteRule ^index\.htm$
に変更しているだけです。とても簡単ですね。
ケース4:さくらインターネットのサーバーでの設定
さくらインターネットのサーバーでの設定方法です。
wwwあり・index.htmのサイトを例に解説します。
<IfModule mod_rewrite.c>
RewriteEngine On
# ① httpからhttpsへのリダイレクト
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# ② wwwなしからwwwありへのリダイレクト
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
# ③ /index.htm を / にリダイレクト
RewriteRule ^index\.htm$ / [R=301,L]
</IfModule>
ケース5:エックスサーバーで「wwwなし」に統一(index.htm)
最後に、これまでの応用編として、エックスサーバーで「wwwなし」に統一し、かつファイル名が「index.htm」の場合の設定です。
これまでのパターンを組み合わせるだけなので、難しくありません。
<IfModule mod_rewrite.c>
RewriteEngine On
# ① httpからhttpsへのリダイレクト
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# ② wwwありからwwwなしへのリダイレクト
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]
# ③ /index.htm を / にリダイレクト
RewriteRule ^index\.htm$ / [R=301,L]
</IfModule>
このように、②で「wwwあり→なし」の設定を、③で「index.htm」の非表示設定を記述すれば、ご希望の動作が実現できます。
【総まとめ】設定パターン一覧表
今回紹介した設定の組み合わせを、表にまとめました。ご自身のサイトがどのパターンに当てはまるか、最終確認にご利用ください。
正規URL | ファイル名 | サーバー | 主な設定内容 |
---|---|---|---|
wwwあり | index.html | エックスサーバー | RewriteCond %{HTTP_HOST} ^example\.com$ [NC] RewriteRule ^index\.html$ / [R=301,L] |
wwwなし | index.html | エックスサーバー | RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC] RewriteRule ^index\.html$ / [R=301,L] |
wwwあり | index.htm | エックスサーバー | RewriteCond %{HTTP_HOST} ^example\.com$ [NC] RewriteRule ^index\.htm$ / [R=301,L] |
wwwなし | index.htm | エックスサーバー | RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC] RewriteRule ^index\.htm$ / [R=301,L] |
wwwあり | index.htm | さくらインターネット | RewriteCond %{HTTPS} off で動かない場合はRewriteCond %{ENV:HTTPS} !on を試す。 |
.htaccessのよくある質問
- WordPressの記述(# BEGIN WordPress…)は消していいですか?
- 絶対に消さないでください。WordPressがサイトを正しく表示するための重要な記述です。今回紹介したコードは、必ず「# BEGIN WordPress」よりも前の行に記述してください。
- サイトがエラーで表示されなくなりました!
- 慌てずに、作業前にバックアップした.htaccessファイルで上書きして、元の状態に戻してください。サイトが復旧したら、コピーしたコードに間違いがないか、特にドメイン名や記述場所を再度落ち着いて確認しましょう。
まとめ:URL正規化でサイトの信頼性を高めよう
今回は、.htaccessファイルを使ってURLを正規化する方法を、サーバーやケース別に詳しく解説しました。
1. https化、www統一、index.html(.htm)非表示が正規化の基本。
2. サーバー環境によって記述方法が少し異なる場合がある。
3. 作業前には必ずバックアップを取り、慎重に作業する。
URLの正規化は、ユーザーの混乱を防ぎ、検索エンジンからの評価を一つに集約するために非常に重要です。この記事で紹介したコードを参考に、あなたのサイトの信頼性をさらに高めていきましょう。

.htaccessは強力な分、設定は慎重に!もし不安な場合は、詳しい人に相談するのも一つの手ですよ。