最新コラム
-
-
-
-
SEO対策コンテンツSEO
コンテンツを最適化したら上位化した話
-
Webサイト制作サイト制作
フォトショップのレイヤー管理術で作業を効率化しよう!
-
SEO対策コンテンツSEO
文章力を楽しく身につける、たった2つの方法

.htaccessはリダイレクトを設定する代表的な方法ですが、ほんの少しでも書き方を間違ってしまうと途端にエラーが発生してしまいます。
しかも、設置場所を間違うとサイト全体が表示されなくなることもあるのです。
そこで今回は、.htaccessを使って正常にリダイレクトが機能するよう、対応サーバーの種類・ファイルの作り方・書き方ルールなどを手順に沿って解説します。
注意点も併せて参考にしてください。
目次
.htaccessによる各種設定はセキュリティ対策だけでなく、SEOに役立つ用途も数多く含まれています。
.htaccessでできること
中でも、ユーザーの利便性に直結するリダイレクト設定はSEO対策としての必須要素です。
ちなみに、理想的な転送処理として評されている301リダイレクトの設定方法はいくつかありますが、Googleは.htaccessを使用する方法を推奨しています。
.htaccessでリダイレクトを設定する手順は、下記の6ステップで進めます。
全てのサーバーで.htaccessが使える訳ではありません。
.htaccessに対応しているサーバーは、下記2つの条件を両方とも満たしている必要があるのです。
.htaccess対応サーバーの条件
ご使用のサーバーが下記に含まれている場合は、.htaccessを使ってリダイレクト設定を行うことができます。
.htaccessが使えるレンタルサーバー
大手サーバーのほとんどが対応しているのですから、.htaccessの利用者が多いのも頷けます。
一方、Nginxのサーバーはホスティングサービスで対応できる場合を除き、基本的にhtaccessファイルを使用することはできませんので注意が必要です。
対応サーバーだからと言って、必ずしもサーバー内に.htaccessファイルが用意されているとは限りません。
あらかじめ、.htaccessファイルがサーバー内に存在するか確認しておきましょう。
.htaccessファイルの有無による対応の違い
.htaccessには書き方ルールがあり、少しでも記述ミスがあるとエラーや誤作動が発生しますので、必ず厳守して下さい。
コードの書き方ルール
では早速、リダイレクトを設定する「.htaccess」の書き方について、実際にコードを見ながら解説していきます。
一般的なリダイレクト設定
なお、ここでは最も一般的な301リダイレクト(恒久的)を設定するための書き方をご紹介しています。
一時的に転送させたい場合は、構文の「301」を「302」に書き変えてご利用ください。
下記のケースに当てはまる場合は、ドメイン単位(Webサイト全体)のリダイレクトを設定します。
記述例:「旧ドメイン」→「新ドメイン」へのリダイレクト
RewriteEngine On
RewriteCond %{HTTP_HOST}^旧ドメイン.com
RewriteRule ^(.*)$ https: //新ドメイン.com/$1 [R=301,L]
下記のようにhttpsまたはhttpに統一されている場合は、よりシンプルに記述することもできます。
記述例:「旧ドメイン」→「新ドメイン」へのリダイレクト(httpsに統一済み)
RewriteEngine On Redirect permanent / https://新ドメイン.com/

サブドメインとは「https://sub.●●.com/」のように区分されているドメイン、ルートドメインとは「https://■■.com」のように区分されていないドメインのことです。
記述例:「サブドメイン」→「ルートドメイン」へのリダイレクト
RewriteEngine on
RewriteCond %{HTTP_HOST} ^sub\.●●\.com$
RewriteRule (.*) https://■■.com/$1 [R=301,L]
下記のように、反対方向へ転送することも可能です。
記述例:「ルートドメイン」→「サブドメイン」へのリダイレクト
RewriteEngine On
RewriteCond %{HTTP_HOST} ^sub\.●●\.com
RewriteRule ^(.*) https://■■.com/sub/$1 [R=301,L]
ディレクトリ単位のリダイレクト設定が必要になるのは、下記のような理由でディレクトリ構造が変化した時です。
記述例:「/●●/」ディレクトリ→「/■■/」ディレクトリへのリダイレクト
RewriteEngine on RewriteRule ^●●(.*)$ /■■$1 [R=301,L]
下記のようなケースでは、ページ単位で転送します。
変更前が「sampl.com/●●.html」、変更後が「sampl.com/■■.html」だった場合、URLのファイル名だけを使って記述します。
記述例:「変更前の●●ページ」→「変更後の■■ページ」へのリダイレクト
RewriteEngine on RewriteRule ^●●.html$ /■■.html [R=301,L]
URL全体を変更した時は、下記のように記述します。
記述例:旧「https://www.●.com/●/●.html」→新「https://www.■.com/■/■.html」へのリダイレクト
RewriteEngine on RewriteRule https://www.●.com/●/●.html https://www.■.com/■/■.html [R=301,L]
サイト全体に「■■」へのリダイレクトを設定したいが、特定のディレクトリだけは「■■」へ転送させたくない、という場合の書き方です。
記述例:「●●」ディレクトリだけ除外するリダイレクト
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} !(^/●●/)
RewriteRule ^$ http:www.■■.com [R=301,L]
下記のように、ユーザーがサイト上に存在しないURLへアクセスすると、「Not Found」またはレンタルサーバーが用意した「404エラーページ」が表示されます。
あらかじめ用意しておいた404エラー専用のカスタマイズページにリダイレクトを設定しておくことで、ユーザーの取り逃がしを防ぐことができるのです。
記述例:「404htmlファイル」へのリダイレクト
ErrorDocument 404 /404.html
上記の「404html」とは、カスタマイズした404エラーページのファイル名で、任意変更も可能です。
リダイレクトを設定する前に「TOPページへ」や「サイトマップ」などを設けたオリジナルの404ページのファイルを作成し、サーバーにアップロードしておきましょう。
こちらは、「PCサイト」と「スマホサイト」を統一せず、別々に運営・管理している場合に使うリダイレクトです。
記述例:スマホからのアクセス→スマホ用のディレクトリ「/sp/」へリダイレクト
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} !/sp/
RewriteCond %{HTTP_USER_AGENT} (iPod|iPhone|Android.*Mobile|Windows.\ Phone)
RewriteRule ^(.*)$ sp/$1 [R]
RewriteCond %{REQUEST_URI} /sp/
RewriteCond %{HTTP_USER_AGENT} !(iPod|iPhone|Android.*Mobile|Windows.\ Phone)
RewriteRule ^sp/(.*)$ $1 [R]
ここからは、SEO対策として欠かせない「URLを統一」するリダイレクトの買い方をご紹介します。
SEOに効果的なリダイレクト
「www」の有無を統一するURLの正規化は、SEO対策の基本です。
www「ありなし」は、どちらに統一させても問題ありません。
ただし、www「なし」のアドレスにアクセスした際にwww「あり」のサイトが表示されるとGoogleからの評価が分散されてしまうので、どちらかに統一した方がSEOにとって有利です。
下記の構文では、wwwなしの「https://●●.com」にアクセスした際、wwwありの「https://www.●●.com」に転送されます。
記述例:www「あり」に統一するリダイレクト
RewriteEngine on
RewriteCond %{HTTP_HOST} ^●●\.com$
RewriteRule ^(.*)$ https://www.●●.com/$1 [R=301,L]
こちらは反対に、wwwありの「https://www.●●.com」にアクセスした際、wwwなしの「https://●●.com」へ転送されます。
記述例:www「なし」に統一するリダイレクト
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.●●\.com$
RewriteRule ^(.*)$ https://●●.com/$1 [R=301,L]
下記のように、URLの最後に「index.html」が付いているかいないかで、異なるサイトと認識されてしまいます。
URLの不統一は、SEO評価を低下させる原因です。
下記の記述例を参考に、「index.html」についてもリダイレクトを設定してURLを統一しておきましょう。
記述例:index.html「あり」で統一するリダイレクト
RewriteEngine on RewriteRule ^$ /index.html [R=301,L]
記述例:index.html「なし」で統一するリダイレクト
RewriteEngine on
RewriteCond %{THE_REQUEST} ^.*/index.html
RewriteRule ^(.*)index.html$ https://●●.com/$1 [R=301,L]
SSL(データ通信の暗号化)は企業だけでなく、一般家庭でも常識になっています。
今後もセキュリティへの関心が薄れるとは考えにくいので、恒久的な301リダイレクトを設定しておきましょう。
記述例:http→httpsへのリダイレクト
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]


htaccessファイルは正しい場所に設置しないと機能しないばかりか、サイト全体で不具合が発生し兼ねません。
アップロードする前に、どこに設置すべきなのか必ず確認しておきましょう。
.htaccessファイルの影響範囲は、設定(アップロード)した場所より配下にある全ディレクトリです。
したがって、「何」を「どこまで」適用させるかで.htaccessファイルを設置すべき場所が異なります。
設置場所の一例
2番のケースでは、「A」より下層にある「A-1」や「A-2」といったサブディレクトリにも反映されます。
その一方で、「A」と同じ階層にある「B」や「C」といったディレクトリには反映されません。
設置場所のポイント
最後に、.htaccessでリダイレクトを設定する際の注意点について解説します。
注意点
Windowsのメモ帳で.htaccessファイルを作成した場合は、「.txt」という拡張子が付いていない「.htaccess」というファイル名で保存します。
ただし、Windows環境下で「.txt」が消えないなど「.htaccess」というファイルが作成できない場合は、下記の対処法を試してみましょう。
対処法
一方、mac(iOS)やUNIX系のOSを使用されている方は、ドット(.)から始まるファイルが不可視ファイルとして扱われるため、下記のように対処します。
mac(iOS)環境でファイルを保存する方法
完成した.htaccessファイルをサーバーにアップロードして、設定内容を実行させましょう。
通常はFTPソフトなどを使用しますが、アップロード方法は各サーバーによって手順が異なりますので、公式HPで確認して下さい。
「604」などのバーミッションも、各サーバーのルールに従いましょう。
書き方ルールもアップロード方法も間違っていないのに、なぜかファイルが見つからない…という不思議な現象に悩まされている方もいるようです。
FTPソフトやPC環境によっては、先頭がドット「.」から始まるファイルが初期設定で非表示になっている可能性があります。
いわゆる「隠しファイル」として扱われている場合は、下記の方法で可視化してみましょう。
隠しファイルを表示させる方法
WordPress内には元々.htaccessファイルが存在し、そこには最初から下記の構文が記載されています。
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ – [L] RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
上記の記述を削除または上書きすると、ページが非表示になったり正しく表示されなくなったりする可能性があります。
WordPress内の.htaccessファイルを利用する際は、すでに記述されている内容を編集せずにそのまま残しましょう。
もちろんWordPressでも設定は可能ですし、通常であればインストールしたルートディレクトリ内に.htaccessファイルが用意されています。
基本的な書き方も同じなので、前述した記述例と書き方ルールを参考にしてください。
ただし、必ずしもWordPress内に.htaccessファイルがあるとは限りません。
インストール時に作成されているはずの.htaccessファイルない場合は、前述した「.htaccessファイルが見つからない時の対処法」を試してみましょう。
それでも見つからないのなら、インストール時の不具合かもしれません。
例えば、FFFTPというFTPソフトであれば下記の手順で.htaccessファイルが新たに自動生成されます。
.htaccessファイルが作成されていなかった時の対処法
.htaccessを使ったリダイレクト設定は、サーバー領域に影響を与える作業です。
アクセス権を持っているサーバー管理者ならともかく、できれば担当したくないと避けている方が多いのも当然かもしれません。
ポイントは、「正しい書き方ルール」と「設置場所の見極め」です。
Webサイトの制作・運営に携わっている方なら、マスターしておいて損はありません。