.htaccessで301リダイレクトする書き方・設定方法

.htaccessで301リダイレクトする書き方・設定方法
当記事の信頼性
管理人:かつさんど
  • 現役Webマーケター
    元Webディレクター
  • 東証一部上場の不動産系企業で勤務
  • 最高収益:月間30万円
目次

.htaccessとは

.htaccessとは

.htaccess(ドット・エイチ・ティ・アクセス)とはWebサーバーの設定ができるファイルです。

「.(ドット)」が先頭に付いている形が正しいので注意しましょう。私は最初見落としていました。

Webサーバーの設定ができるといっても、イメージがわかないと思います。

具体的には下記のようなことができます。 

  • 301リダイレクト
  • Basic認証
  • IP制限
  • キャッシュの設定
  • 404エラー時に別ページを表示

このように.htaccessはWebサイトの運用上でとても役に立つ仕組みになっています。

内容説明
301リダイレクト特定のページに自動で転送する設定
Basic認証ユーザー名とパスワードの入力を求める設定
IP制限指定したIPアドレス以外からのアクセスを制限する設定
キャッシュの設定ブラウザで表示したキャッシュをパソコンに保存して、
次回以降の読み込み速度を向上する設定
404エラー時に別ページを表示404エラーが発生時に別ページを自動的に表示する設定

.htaccessはWebサーバーによく使われているApacheが入っているサーバー環境であれば、基本的には動作するようになっています。

しかし、Nginxを利用しているWebサーバーで一部.htaccessファイルが利用できないことがあるので利用できるかどうかはレンタルサーバー会社などに確認してみてください。

リダイレクトとは

リダイレクトとは

リダイレクトは一言でいうと転送という意味になります。

つまり、.htaccessでAページからBページにリダイレクトの設定をしておくことで、ユーザーがAページにアクセスした際に、自動的にBページに転送することができます。

特に既にページが存在しない場合などに、適切にユーザーを見てほしいWebサイト、Webページに誘導できます。

リダイレクトの種類

よく使うリダイレクトとしては、301リダイレクトと302リダイレクトがあります。

301リダイレクトは一般的な転送方法で、「永続的な転送」という意味を持ってます。

転送前のページが受けていたSEO評価を転送後のページに渡すことができます。Webサイトの引っ越しなどによりドメインや各ページのURLが変わるのであれば301リダイレクトをすることが多いです。

もう一方の302リダイレクトは「一時的な転送」を意味します。

メンテナンスなどで一時的に別のページを見てもらいたい時などは302リダイレクトが最適です。

301リダイレクトと302リダイレクトは以下のように覚えておきましょう。

  • 301リダイレクト:永続的な転送
  • 302リダイレクト:一時的な転送

リダイレクトの方法

リダイレクトの方法としては以下の3つがあります。

  • .htaccess
  • meta refresh
  • JavaScript
内容説明
.htaccess.htaccessファイルを使用。
転送前ページのSEO評価を引き継ぐことが可能
meta refreshmeta refreshタグをHTMLに記述。
meta refreshによる転送はSEO評価を引き継がないため避けるほうが無難です。
JavaScriptJavaScriptで転送前ページのHTMLに記述。
転送前ページのSEO評価を引き継ぐことが可能ですが、
.htaccessでリダイレクトする方が安全です。

基本的にリダイレクトを行う場合は、.htaccessを使用する方法をオススメします。

リダイレクトとSEOの関係

リダイレクト設定を行うことで転送前のページのSEO評価を転送後のページに引き継ぐことが可能です。

例えば、Webサイトの引っ越しにより、ドメインや各ページのURLが変わることになった場合、301リダイレクトで変更後のページのURLに今までのSEO評価を渡すことができます。

また転送前のページが既に削除されていたり、存在しない場合でも.htaccessに転送前ページと転送後ページを記述することでユーザーを転送することはもちろんSEO評価の引き継ぎも可能です。

.htaccessで301リダイレクトする方法

.htaccessで301リダイレクトする方法

.htaccessファイルの作り方

.htaccessファイルはテキストエディターで作成します。Windows標準で利用できるメモ帳やMacのメモで作成が可能です。

設定したい内容を記述して、下記3つの注意点を守れば作成できます。

  • 最後に改行を入れる
  • ファイル名はドットで始まる「.htaccess」にする
  • テキスト形式で保存する

特にファイルを保存する際に、保存時のダイアログでファイルの種類という項目内容によって、拡張子が自動的に入ってしまう設定になっている可能性があるので注意が必要です。「.htaccess.txt」や「.htaccess.index.html」ではなく「.htaccess」の拡張子が付いていない形が正しいです。

もしサーバー環境によって、「.htaccess」のファイル名で保存できない場合、一旦「.htaccess.txt」や「.htaccess.index.html」で保存して、サーバーにアップロード→ファイル名をリネームして、「.htaccess」にするのでも問題ありません。

.htaccessファイルの設置場所

.htaccessファイルはリダイレクトを行う対象のWebサイトが格納されているサーバーのルートディレクトリに設置する必要があります。

「http://nuko-blog.net/」というWebサイト全体に.htaccess の設定を行いたい場合は、「http://nuko-blog.net/」のホームディレクトリにアップロードします。仮に、「http://nuko-blog.net/blog/」という特定のディレクトのみに.htaccess の設定を行いたい場合は、「http://nuko-blog.net/blog/」のホームディレクトリにアップロードします。

.htaccessで301リダイレクトを行うパターン別の書き方

.htaccessで301リダイレクトを行うパターン別の書き方

ページ単位で301リダイレクト

「https://nuko-blog.net/■■.html」から「https://nuko-blog.net/●●.html」に301リダイレクトする場合は下記のように記述します。

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^■■\.html$ https://nuko-blog.net/●●.html[R=301,L]
</IfModule>

ディレクトリ単位で301リダイレクト

「/■■/」から「/●●/」に301リダイレクトする場合は下記のように記述します。

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteRule ^■■/(.*)$ /●●/$1 [R=301,L]
</IfModule>

ドメイン単位で301リダイレクト

「https://■■.com/」から「https://●●.com/」に301リダイレクトする場合は下記のように記述します。

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

複数のページを同じページに301リダイレクト

複数のページから「https://●●.com」に301リダイレクトする場合は下記のように記述します。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* http://●●.com [R=301,L]
</IfModule>

特定のディレクトリ・ファイルを除外して301リダイレクト

ディレクトリ「■■」を除外して、新ドメイン「●●.com」に301リダイレクトする場合は下記のように記述します。

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} !(^/■■/)
RewriteRule ^(.*) https://●●.com/$1[R=301,L]
</IfModule>

サブドメインからルートドメインへの301リダイレクト

サブドメイン「https://sub.■■.net/」から新ドメイン「https://■■.net/」に301リダイレクトする場合は下記のように記述します。

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^sub\.■■\.net$
RewriteRule (.*) https://■■.net/$1 [R=301,L]
</IfModule>

ファイル単位で301リダイレクト

「□□/■■.php」から「/○○/●●.php」に301リダイレクトする場合は下記のように記述します。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^□□/■■.php /○○/●●.php [R=301,L]
</IfModule>

URLの正規化のための301リダイレクト

URLの正規化のための301リダイレクト

「www」有りに統一

「http://nuko-blog.net」から「http://www.nuko-blog.net」に301リダイレクトする場合は下記のように記述します。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^nuko-blog\.net
RewriteRule ^(.*) http://www.nuko-blog.net/$1 [R=301,L]
</IfModule>

「www」無しに統一

「http://www.nuko-blog.net」から「http://nuko-blog.net」に301リダイレクトする場合は下記のように記述します。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.nuko-blog\.net
RewriteRule ^(.*) http://nuko-blog.net/$1 [R=301,L]
</IfModule>

「index.html」無しに統一

「http://nuko-blog.net/index.html」から「http://nuko-blog.net/」に301リダイレクトする場合は下記のように記述します。

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{THE_REQUEST} ^.*/index.html
RewriteRule ^(.*)index\.html$ http://nuko-blog.net/$1 [R=301,L]
</IfModule>

httpsに統一

「http://nuko-blog.net」から「https://nuko-blog.net」に301リダイレクトする場合は下記のように記述します。

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*) https://nuko-blog.net/$1 [R=301,L]
</IfModule>
よかったらシェアしてね!
  • URLをコピーしました!
目次