2019/07/16

.htaccessのリダイレクト – 書き方・設置場所・設定方法を解説します

.htaccessを使ったリダイレクト方法

解説猫(仮)
解説猫(仮)SEO解説担当の猫さんです
元SEOディレクターで、現在は自社マーケティングやってるみたいです
・趣味:昼寝
・どんな人でもわかる優しい説明をこころがけているが、そんなにうまくはない
・冷静な判断で仲間からの信頼も厚い(自称)
竹内
竹内現役SEOディレクターのおじさんです
顔は怖いけど美しく清らかな心の持ち主です
・顔は怖いが、丁寧な対応でクライアントからの信頼も厚い
・顔は怖いが、空気を読むスキルが高く冗談も通じる
・顔は怖いが、笑顔も結構怖い

ある程度長くウェブ担当をされている方、「リダイレクト(転送)」が必要になった経験ってありませんか?
転送って普通にHTMLを編集するだけではできなくて、悩まれる方も多いと思います。

解説猫(仮)
こんにちは、こんばんは、解説の猫(仮)と申します。
この記事では、下記2点を説明していきます。
よろしくお願いしますね。
・どのような場面で.htaccessを使用するのか
・.htaccessを使ったリダイレクトの設定方法

竹内
こんにちは!竹内と申します。
今日は猫さんに.htaccessについて教えてもらえると聞いて、参加させてもらいました。
まだまだ若輩者ですが、よろしくお願いします!

.htaccessとは?

.htaccessとは一体何者なのか

サーバーを制御するファイルで、「ドット・エイチ・ティ・アクセス」と読みます。
このファイルでは下記みたいなことができます。

  • リダイレクト(アクセスしたユーザーを転送する設定)
  • ベーシック認証(ユーザー名とパスワード入れないとページを見れなくする設定)
  • キャッシュの設定(読み込みを早くする設定、詳しくはいつかどこかで…)

このファイルはApacheなどのソフトウェアが使用されているサーバー環境なら動くはずです。
設定しても動かなかったら、環境が原因の可能性がありますね。
この内容が???な方は、サーバー周りを管理している方に聞いてみてください!

.htaccessの作り方

メモ帳などのテキストエディタで文書を開いて保存しましょう。
この時点ではファイル名は何でも構いません。(仮に「htaccess.txt」とします)
この「htaccess.txt」をサーバーにアップロードしてファイル名を「.htaccess」に変更すれば、記述した内容が反映されます。
※すぐに転送の記述内容を確認したい方はこちらからご覧いただけます。

※注意点がありますので、必ず下記の項目を読んでから反映作業を実施してください!

.htaccessの設置場所・影響範囲

ファイルを設置したディレクトリから下の全てのファイルが影響範囲になります。
複数設置することが可能で、複数ある場合は下の階層にあるものが優先されます。

解説猫(仮)
竹内、「htaccess 白」で検索。
竹内
「画面が真っ白になった」記事が出てきましたね。
解説猫(仮)
竹内、「htaccess 蒼白」で検索。
竹内
「顔面が真っ白になった」記事が出てきましたね。
解説猫(仮)
そうなのよ。
私もやらかしたときは黒い模様の部分が白くなるほど肝を冷やしたものさ…
それぐらい.htaccessは数々のウェブマスターを恐怖に陥れてきた「恐怖のファイル」なのです。
解説猫(仮)
なのでここからはリダイレクトについて「.htaccessでリダイレクトするやり方」「リスクを回避するための注意事項」の2つを軸に解説していきますね。

リダイレクトとは?

簡単に言うと、リダイレクト=転送です。
よく見かける設定方法を、いくつか紹介します。

301リダイレクト

設定方法の説明の前に前提として一つ「301リダイレクト」について説明します。
301リダイレクトは最も一般的なWebページの転送方法で、
「永続的な転送」を意味します。
こちらの転送では、転送前のページが得ていた評価を転送後のページに引き継ぐことができます。

他に比較的使用頻度が高い転送方法として302リダイレクトがあり、
「一時的な転送」を意味します。

301と302では以下のような違いがあります。

  • 301:永続的な転送、評価引継ぎが行われ、Googleの処理が速い
  • 302:一時的な転送、評価引継ぎが行われるが、301と比べてGoogleの処理が遅い

こちらの記事で推奨している転送の記述は、全て「301リダイレクト」を使用した記述になります。

リダイレクト設定方法

リダイレクトには以下のような方法があります。

  • 「.htaccess」による転送
  • 「meta refresh」による転送
  • 「JavaScript」による転送

一つずつ説明しますね。

.htaccessを使用したリダイレクト

.htaccessファイルを使用したリダイレクトです。
転送の設定を.htaccessファイルに記述するため、転送前のページが存在しなくてもユーザーを転送することが可能です。
また、転送前のページのリンクによる評価を引き継ぐことが可能です。
基本的にリダイレクトを行う場合は、こちらの.htaccessを使用する方法をオススメします。

meta refresh

「meta refresh」という記述を使った転送設定です。
転送前のページのタグ内に設定します。 HTMLに直接記述すれば転送できるため、簡単に設定を行うことができます。 こちらの方法はHTMLに直接記述が必要なため、転送前のページを残しておく必要があります。 また、「meta refresh」による転送はリンクによる評価を引き継がないため、SEOの観点からオススメできません。

JavaScript

JavaScriptを使用した転送も、転送前のHTMLに直接記述します。
サーバー環境によっては。.htaccessを使用できず、代替案としてJavaScriptを使用するケースがあります。
meta refresh同様、転送前のページを残しておく必要があります。
GoogleはJavascriptの内容を理解できるため、リンクの評価引継ぎは行われると考えられます
ですが、.htaccessでの転送が可能であれば、こちらの転送を使用する必要はありません。

リダイレクトが必要な場面とそれぞれの記述

リダイレクトの設定は、基本的には以下のようなケースで必要となります。

  • ページ単位でリダイレクトしたい
  • ディレクトリ単位でリダイレクトしたい
  • ドメイン単位でリダイレクトしたい
  • URLの正規化をしたい
  • その他よくある用途別の設定

では、一つずつ見てみましょう。

ページ単位でリダイレクトしたい

ページを削除した場合やURLを変更した場合に設定します。
そのページを訪れたユーザーを、目的のページに案内してあげる必要があります。

※「■■.html」から「▲▲.html」に転送する場合

RewriteEngine on
RewriteRule ^■■.html$ https://www.〇〇.com/▲▲.html [L,R=301]

ディレクトリ単位でリダイレクトしたい

ページ単位ではなく、ディレクトリごと転送したい場合の設定になります。
部分リニューアルやCMS変更などで、ディレクトリ構造を変更した場合に役立ちます。

※「/■■/」から「/▲▲/」に転送する場合

RewriteEngine on
RewriteRule ^■■(.*)$ /▲▲$1 [L,R=301]

ドメイン単位でリダイレクトしたい

例えばサイトリニューアルでドメインを変更した場合等が該当します。
(ドメイン変更は検索順位の観点でリスクを伴いますので、お勧めはしませんが…)
下層ページのURLが異なる場合、異なる箇所は別途設定が必要になりますのでご注意ください!

※「https://www.■■.com/」から「https://www.▲▲.com」に転送する場合

RewriteEngine On
RewriteCond %{http_host} ^www.■■.com
RewriteRule ^(.*) https://www.▲▲.com/$1 [R=301,L]

URLの正規化をしたい

正規化は「評価Googleに評価してもらうURLを統一すること」です。
SEOを意識した設定になりますので、ぜひ試してみてください!

※「www.なし」のURLを「www.あり」に転送する場合

RewriteEngine on
RewriteCond %{ HTTP_HOST} ^■■\.com
RewriteRule ^(.*)$ https://www.■■.com/$1 [L,R=301]

※「index.htmlあり」のURLを「index.htmlなし」に転送する場合

RewriteEngine on
RewriteCond %{THE_REQUEST} ^.*/index.html
RewriteRule ^(.*)index.html$ https://■■.com/$1 [L,R=301]

その他よくある用途別の設定

ここまで紹介した以外で割とよく使う設定を紹介します。

※「404エラーページ」の転送

ErrorDocument 404 /404.html

上記で転送を実行するには、事前に「404.html」というファイルを作成し、アップロードする必要があります。
ファイル名(404.html)は変更可能ですが、htaccessの記述と一致させてください。

※「SSL化(http⇒https)」への転送

RewriteEngine on
RewriteCond %{ HTTPS} off
RewriteRule ^(.*)$ https://%{ HTTP_HOST}%{REQUEST_URI} [L,R=301]

SSL化(暗号化セキュリティ)では「http」から「https」にURLが変わります。
変更に伴い、リダイレクトが必要になります。
※SSLに関しては別途記事で説明する予定です、作成したらリンクを貼りますね!

Googleは個人情報などを扱っていないサイトでも常時SSL化を推奨しています。
SEOの観点からみてもSSL化未対応のデメリットは大きいので、
未実装でしたら、すぐにでも対応することをお勧めします。

竹内
なるほど、各記述の赤字部分は変更の可能性があるってことですね?
解説猫(仮)
こ、これから説明しようと思ってたんだから。
竹内
ハハ、そうですね(笑)
ところで「RewriteRule」とか普段見慣れない記述がありますが、どういう意味なんでしょうか?
解説猫(仮)
うむ…(怒)全ての解説はできないが、ざっくり言うと…
・RewriteEngine on:書き換えを開始するぜ!!
・RewriteCond:書き換えする対象(条件)はこれだぜ!!
・RewriteRule:書き換え内容はこれだぜ!!

竹内
(解説が荒ぶっている…笑)
開始を宣言して、条件指定して、条件を満たした場合は書き換え…
ってわけですね、わかりやすい!
解説猫(仮)
他にも普通に生きてたら一生遭遇しないであろう文字列が多々ありますが、長くなるのでいつか機会があったら説明します。
では、次からはサイトへの反映方法について説明していきますね。

.htaccessをアップロードしてみよう

書く前にちょっと準備

.htaccessを書く前に、「FTPソフト」と「PC環境」の環境設定を行います。
何のためにやるかと言うと「.htaccessファイルを見えるようにする」作業になります。
※環境次第では、PCやFTPソフト上で.htaccessが見えなくなっている可能性があります。

FTPソフトの設定を変更する

ここではWinSCPというソフトを例に説明します。
設定することで、FTPソフト上で.htaccessファイルを視認できるようになります。

まずは上部メニュー「オプション」にある「環境設定」をクリック

「環境設定」を開いたら「パネル」にある「隠しファイルを表示する」にチェックを入れる

これで.htaccessなど、初期設定では見えないファイルを見ることができます。
表示を確認出来たら必ず.htaccessファイルのバックアップをとりましょう。

PCの表示設定を変更する

デスクトップ左下のロゴ(ウィンドウズマーク)を右クリックして、
「エクスプローラー」をクリック

エクスプローラーを開いたら「表示」「オプション」をクリック、
「登録されている拡張子は表示しない」のチェックを外す

これでお使いのPCで拡張子を表示できるようになったはずです。
.htaccessは特殊ファイルで.(ドット)より手前がありません。
設定を変更しないとファイルそのものが非表示になってしまい、見えなくなってしまいます。

アップロードしてサイトに反映しましょう!

反映する前にもう一度確認です!
前述しましたが、.htaccessはデフォルトでは表示されない可能性があります。
また、違う階層に複数設置することが可能なファイルです。

・違う階層の.htaccessを上書きしてしまい、バックアップがない
・気づかずに上書きしてサイトが真っ白になった

みたいなことも起こりえます。

防ぐために下記のポイントは必ず守るようにしてください。

  • htaccessが見える状態になっていることを確認する
  • htaccessのバックアップを取る
  • アップロードする場所(階層)を間違えない

.htaccessのよくある間違い

無限ループ

A⇒Bに転送
B⇒Aに転送

たった2つの記述を書くだけで、簡単に無限ループができあがります。
サーバーに大きな負荷がかかりますし、当然ページを見ることはできません。
設定した際は必ず反映確認を行い、不備があった場合はすぐに元に戻しましょう。

必要な記述の削除

WordPressを使用している方、以下のような記述を見たことはありませんか?

# 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に書かれている記述です。
パーマリンクなどに使用されている重要な記述になります。
こちらを消すと、ページが表示されなくなるなどの不備が起こります。

削除したり上書きしたりしないように注意しましょう!

気づかずに上書きしてしまう

こちらは前述していますが、大切なことなのでもう一度言います。
・違う階層の.htaccessを上書きしてしまい、バックアップがない
・気づかずに上書きしてサイトが真っ白になった

みたいなことが起こらないように注意してください!

解説猫(仮)
竹内、無限ループ怖い。
竹内
(この人(?)案外振りが雑なんだよな)
ホント、僕の顔より怖いですよね!!(笑)
昔のやらかしって無限ループだったんですね。
解説猫(仮)
いや、自分のサイトでWordPressのパーマリンクの記述全消し。
竹内
この記事をご覧の皆様、くれぐれもファイルの上書きや、記述の削除にはご注意ください!!

まとめ

.htaccessは便利ですが、とても怖いファイルです。
ちょっと触っただけでサイトが真っ白になったり、ページが表示されなくなったりする要注意ファイルです。
慎重すぎるぐらいが丁度いいので、常に復元できる環境かどうかチェックするようにしましょう!

また、.htaccessファイルはリダイレクトの他にも「ベーシック認証」や「ブラウザキャッシュの設定」などが可能です。
機会があればどこかで紹介しますね!!

資料を無料でダウンロード
資料を無料でダウンロード
無料資料ダウンロードボタン

ページの一番上へ