【基本Tips】htaccessリダイレクトの書き方
ドメインやURLの変更で利用するリダイレクトの基本とテンプレートです
htaccessとは
ウェブサーバの設定を簡易的にできるファイルのことです。
ウェブサーバの設定をいじるにはターミナルでコマンドを入力しておこなうため、サーバ管理者以外の人にはハードルが高い作業になります。
そこで「.htaccess」です。
htaccessファイルに命令文を書くと、サーバが命令文にしたがって処理してくれます。
htaccessファイルはSEOの作業でも使われるため、ホームページの制作や運営には必ず使われます。
.htaccessファイルが使えるサーバ
htaccessのファイル名は「.htaccess」となります。.htaccessファイルをサーバにアップロードすることで機能します。
htaccessファイルは多くのウェブサーバで使えますが、Nginxを利用しているサーバではhtaccessファイルは利用できません。(ホスティングサービスによっては利用できるサーバもあります)
htaccessツール
htaccessの命令文を書くのが大変な時はツールを使う方法があります。
下記のツールは使いやすくお薦めです。
リダイレクトの基本
リダイレクトとは「Aページ」にアクセスしたユーザーを「Bページ」に飛ばすことです。
ホームページやページのURLが変更された時や、PCサイトとスマフォサイトを振り分ける時にリダイレクトが使われます。
リダイレクトの重要性とメリット
リダイレクトには下記のような重要性やメリットがあります。
- URLが変わっても、ブックマークしているユーザーからのアクセスや、リンク先からのアクセスも可能となる。
- URLが変わってもGoogleの評価を引き継ぐことができます。
- URLの「www」があり、なしを統一することができます。
- URLの最後が「/」または「/index.html」を統一することができます。
URLを完全に統一することで、ドメインやページの評価が分散されなくなります。
アクセス解析も分かりやすくなります。
昔はリダイレクトを使ってSEO効果を高めるグレーなテクニックが流行りましたが、今では使われることがありません。
リダイレクトの種類
リダイレクトで最も利用されるのが「301」と「302」です。
他にも303や307などもありますが、一般的に使われるのは301と302です。
- 301リダイレクト(恒久的)
ホームページやURLが変わった時に使われます - 302リダイレクト(一時的)
PCとスマフォサイトを振り分ける時に使われます
いつまでリダイレクトさせておけば良いか?
Googleの発表ではリダイレクト設定は約1年間は設定しておいた方が良いとのこと。
1年もあればインデックスされた情報も書き換えられて、ページの評価も引き継がれます。
ウェブサイトの規模にもよりますが、SEOを目的としたリダイレクト期間の目安は1年ということになります。
ブックマークから訪れるページの場合は、訪れるユーザーが少なくなるまで引き続きリダイレクトさせる必要があるでしょう。
リダイレクトの書き方とテンプレート
ドメインの変更や、ページのURL変更などで使われるリダイレクトのテンプレート集です。
ドメイン変更によるリダイレクト
古いドメインから新しいドメインへのリダイレクトさせます。
リダイレクトは301リダイレクトを利用します。
設定条件
1.古いドメインを、新しいドメインに変更
2.下層ページのURLは変わらない
.htaccess
RewriteEngine On
RewriteCond %{http_host} ^www.old.com
RewriteRule ^(.*) https://www.new.com/$1 [R=301,L]
「old.com」にはドメイン、「new.com」には新しいドメインを記述します。
もっと簡単に書くと下記になります。
.htaccess
RewriteEngine On
Redirect permanent / https://www.new.com/
ディレクトリが変更した場合のリダイレクト
「domain.com/aa/page.html」を「domain.com/bb/page.html」に変更する場合です。
.htaccess
RewriteEngine on
RewriteRule ^aa(.*)$ /bb$1 [R=301,L]
ページのURLが変更した時のリダイレクト
ページのURLを変えた時や、ページを統合した時などに利用されます。
「domain.com/old.html」を「domain.com/new.html」に変更する場合は下記になります。
.htaccess
RewriteEngine on
RewriteRule ^old.html$ /new.html [R=301,L]
URLが大幅に変わる
ドメイン、ディレクトリ、ページ全てが変わる場合は下記になります。
.htaccess
RewriteEngine on
RewriteRule https://www.old.com/old/old.html https://www.new.com/new/new.html [R=301,L]
//下記の方法でも可能
RewirteEngine on
Redirect permanent https://www.old.com/old/old.html https://www.new.com/new/new.html
リダイレクトから特定のディレクトリを除外する
特定のディレクトリだけリダイレクトから除外する方法です。
サンプルではディレクトリ「bbb」をリダイレクトの対象から除外しています。
.htaccess
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} !(^/bbb/)
RewriteRule ^$ http:www.aaa.com [R=301,L]
SEOで使われるリダイレクト
SEOではURLのばらつきがマイナス要因となります。
アクセスデータの数値にも影響するため、リダイレクトでURLを統一させます。
wwwありのリダイレクト
ドメイン「https://aaa.com」にアクセスしても「https://www.aaa.com」にリダイレクトさせます。
wwwが有りでも無しでもアクセスできる場合、2つのURLが存在することになります。URLを統一することでSEOにもドメインの評価が上がります。
下記は「WWWあり」でURLを統一する方法です。
WWWあり
RewriteEngine on
RewriteCond %{HTTP_HOST} ^aaa\.com$
RewriteRule ^(.*)$ https://www.aaa.com/$1 [R=301,L]
wwwなしのリダイレクト
ドメインをwwwなしの「http://aaa.com」に統一させるためのリダイレクトになります。
WWWなし
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.aaa\.com$
RewriteRule ^(.*)$ https://aaa.com/$1 [R=301,L]
URLの最後を統一するためのリダイレクト
URLの最後が下記のように統一されていない場合があります。
- http://aaa.com/aaa/index.html
- http://aaa.com/aaa/
- http://aaa.com/aaa
1と2・3は別のURLとして認識されます。
2と3は同一のURLとして認識されます。
このままではアクセスデータにばらつきが出てしまい、SEOとしてもマイナスとなるためリダイレクトで統一します。
下記は最後に「/」で終わるhtaccessです。
.htaccess
RewriteEngine on
RewriteCond %{THE_REQUEST} ^.*/index.html
RewriteRule ^(.*)index.html$ https://domein.com/$1 [R=301,L]
下記はドメインの最後を「index.html」で統一する方法です。
.htaccess
RewriteEngine on
RewriteRule ^$ /index.html [R=301,L]
SSL導入で、httpをhttpsにリダイレクトする
URLを「http」から「https」にリダイレクトします。
RewriteEngine on
RewriteCond %{ HTTPS} off
RewriteRule ^(.*)$ https://%{ HTTP_HOST}%{REQUEST_URI} [R=301,L]
SEOの評価を引き継がないリダイレクト
SEOの評価を引き継がないで、新しいドメインにリダイレクトしたい時があります。
クローラーをブロックして、ユーザーを新しいドメインへリダイレクトさせます。
robots.txtを用意して、2回リダイレクトさせる必要があります。
1段階目のリダイレクト
全てのアクセスを「/aaa/」ディレクトリにリダイレクトします。
htaccess
RewriteEngine On
RewriteCond %{REQUEST_URI} !/aaa
RewriteRule ^(.*)$ /aaa/ [R,L]
2段階目のリダイレクト
robots.txtでクローラーをブロックして、新しいドメインにリダイレクトさせます。
robots.txt
user-agent: *
disallow: /blocked
htaccess
RewriteEngine On
RewriteCond %{http_host} ^www.aaa.com
RewriteRule ^(.*) https://www.bbb.com/$1 [R=301,L]
デバイスによる振り分け
PCサイトとスマートフォンサイトを別のURLで運営している場合に利用されるリダイレクトです。
PC、スマートフォンサイトの振り分け
サンプルではスマートフォンでアクセスすると「/sp/」ディレクトリにリダイレクトします。
.htaccess
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]
nginxによるhtaccess
nginxではhtaccessファイルが利用できません。nginxのconfigファイルを編集することになります。
htaccessファイルをnginx用に変換してくれるツールがあります。
ただ、完全には変換できない場合もあります。