sponsor

変更する前にバックアップすることをオススメします。

リダイレクト 「.htaccess」の記述

htaccess WP 設定
htaccess
WP 設定
sponsor

リダイレクト

URLが変わった時に、元のURLから新しいURLへ自動転送させることをリダイレクトと言います。リダイレクトしておくと、URLが変わったとしても、目的を持って訪れた訪問者が目的のページに辿り着けます。

次の2通りのリダイレクトの仕方について記載します。

301リダイレクトURLが恒久的に変更された場合に用いる
302リダイレクト一時的に転送する場合に用いる
sponsor

SEOの観点から301リダイレクトの設置について

転送前の検索エンジンからの評価を転送後も引き継ぎます。また、同じ内容のページへのURL、「www」のついているURLと付いていないURLを1つにまとめることで、評価を上げることを期待できます。

  • 「www.example.com」と「example.com」をどちらか1つにする

Google検索の場合はサーバサイドで301リダイレクトの使用を奨めている。ヤフーについては0秒リダイレクトがSEO的に有利と言える。

リダイレクトの例

  • old.com → new.com
  • example.com/old/hoge.html → example.com/new/hoge.html
  • example.com/hoge/old.html → example.com/hoge/new.html

ドメインの変更、ディレクトリの変更、ファイルの変更、すべてにリダイレクトを行えます。

リダイレクトの方法

  • .htaccessファイルを編集する
  • httpヘッダによるリダイレクト
  • metaタグによるリダイレクト
  • プラグインを利用する

「httpヘッダによるリダイレクト」「metaタグによるリダイレクト」は302リダイレクトや、移転のお知らせなどの文章を表示し、数秒後に転送させることができます。

sponsor

.htaccess でリダイレクトを記述する

.htaccessファイルを設置することで、アスセスに関する機能を追加できます。主にできる事は次の点です。

  • アクセスの制限(特定のページやディレクトリにIDとパスワードの入力を求める)
  • 特定のファイルへのアクセスを拒否する
  • 「404 Not Found」などのエラーメッセージを変更できる
  • 指定のURLへ自動転送させる

.htaccessファイルを利用するためには、サーバー内で「Apache」とういソフトウエアが利用されている必要があります。

.htaccessファイルの作成で注意する点・エラーの時の確認すること

  • ファイル名の最初に「ドット」を忘れないように
  • 最後に改行を入れる(テキストファイルは改行で終わることを約束されています)
  • テキストエディタで作成する
  • 全角スペースなど入れない
  • .htaccessファイルのパーミッションは「604」「644」

もしワードなど書式情報を含むソフトで作成する場合、文字コードをBOMなしで保存して下さい。メモ帳で作成する場合はデフォルトの「ANSI」で保存します。メモ帳で作成・保存する場合、拡張子「.txt」が付き保存されてしまいます。「.txt」はFTPなどでアップロード後に削除できます。

.htaccessファイルのアップロードする場所

全体に指示するのならば、一番上のディレクトリにアップロードします。指示したいディレクトリにアップロードします。

php.iniの設定
php.iniの設定
sponsor

.htaccess リダイレクトの書き方

%{REQUEST_URI}ドメインより後のリクエスト
(.*) $ と $1ドメインより後
%{HTTP_HOST}ホスト名(ドメイン)
!^www\.「www.」は意外(「!」は除外)

RewriteBase(ベースとなるディレクトリ)を省略した場合は.htaccessを設置したディレクトリがベースとなります。

ログイン画面・管理画面を除く

RewriteEngine On
RewriteBase / 
RewriteCond %{REQUEST_URI} !^(.*)?wp-login\.php
RewriteCond %{REQUEST_URI} !^(.*)?wp-admin

ログイン画面・管理画面を除き、「https://example.com」を「https://www.example.com」にリダイレクトする

RewriteEngine On
RewriteBase / 
RewriteCond %{REQUEST_URI} !^(.*)?wp-login\.php
RewriteCond %{REQUEST_URI} !^(.*)?wp-admin
RewriteCond %{HTTP_HOST} ^^example\.com$
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]

「www」ありなし

「www」なしを「www」ありにリダイレクトする

RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule .* https://www.example.com%{REQUEST_URI} [R=301,L]

「www」ありを「www」なしにリダイレクトする

RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule .* http://example.com%{REQUEST_URI} [R=301,L]

「https://example.com」を「https://www.example.com」にリダイレクトする

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

ドメイン変更のリダイレクト

「https://old.com」を「https://new.com」にリダイレクト①

RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^old\.com$ [NC]
RewriteRule .* https://new.com%{REQUEST_URI} [R=301,L]

「https://old.com」を「https://new.com」にリダイレクト②

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

SSL化のリダイレクト

「http」を「https」へリダイレクト

RewriteEngine on
RewriteBase /
RewriteCond %{HTTPS} off
RewriteRule .* https://www.example.com%{REQUEST_URI} [R=301,L]
sponsor

下層、ドメインより後ろのリダイレクトが効かない原因

「# BEGIN WordPress」の下に記述した場合、%{REQUEST_URI} や https://www.example.com/$1 が反映されません。

上の方に記述する

.htaccessファイルのリダイレクトの記述
.htaccessファイルのリダイレクトの記述
htaccessファイルのリダイレクトの記述
htaccessファイルのリダイレクトの記述
sponsor

.htaccessファイルのリダイレクトの記述を簡単に説明

.htaccessファイルのリダイレクトの記述「Mod_Rewrite」

Mod RewriteはアクセスしたURLを書き換えるモジュール(機能)です。URLのパス(文字列)の記述ができます。

Redirectを利用

すべてを「http://new.com/」にリダイレクトする

Redirect permanent http://new.com/

「http://old.com/」も「http://old.com/aaa」も「http://new.com/」にリダイレクト

Redirect permanent301
Redirect temp302

Rewriteを利用

  • RewriteCond (条件)転送元
  • RewriteRule (ルール)転送先
RewriteEngine on
RewriteCond %{HTTP_HOST} ^old\.com$
RewriteRule ^(.*)$ https://new.com/$1 [R=301,L]

※転送元URLを「old.com」転送先URLを「new.com」とする。

条件リクエストがold.comの場合
ルールnew.comへリダイレクトする

$と$1(末尾と後方参照)

$と$1

  • ^(.*)$ https://new.com/$1 [R=301,L]

リクエストが http://old.com/aaa とすると、aaaは(.*)にマッチしており、$1であり、https://new.com/aaa へリダイレクトされる

宣言文とその意味

宣言文意味
RewriteEngine onMod Rewrite(書換え)の機能をON
RewriteBaseベースとなるパス
RewriteCond条件
RewriteRuleルール
HTTP_HOSTサーバーのホスト名
%{REQUEST_URI}ドメインより後ろのリクエスト
8080ポート(http)にアクセスがある
[NC]大文字小文字関係なく
R=301301リダイレクトで、Rのみは302
Lこれが最後
(.*)文字を繰り返す(あらゆる文字)
!除外

コンピューターネットワークにおいて、HTTPは、Webサーバのポート80番を割り当てられ、接続されています。

正規表現

文字意味マッチ
^(キャレット)先頭^exampleexample.・・
$末尾example$・・example
文字意味マッチ
?直前の表現が0個か1個no?tente、note
*直前の文字を0個以上no*tente、note、noote、nooote等
+直前の文字が1個以上no+tenote、noote等
|(パイプ)またはtsutaya|tutayatsutayaまたはtutaya
()グループt(su|u)tayatsutayaまたはtutaya
\(バックスラッシュ)前に付け文字として認識させるexample\.comexample.com
.(ピリオド)任意の一文字.*文字を繰り返す

「.」ピリオドとドットの区別・エスケープ処理

正規表現の「.」(ピリオド).任意の一文字
「.」(ドット)\.文字として認識させる

example\.com 「\」は直後の正規表現をエスケープ

「.」任意の一文字をエスケープ

  • example.com

「?」0か1

RewriteCond %{HTTP_REFERER} ^http(s)?://(www\.)?example\.com$

()内はグループで?は0か1、「\.」はドット

http(s)?httpとhttps
(www\.)?example\.comexample.comとwww.example.com
sponsor

ディレクトリの変更(/ランチ/以下のパスに変更がない場合)

  • //example.com/ランチ/test.html →//example.com/和食/ご飯/test.html に変更。

※例は日本語で記載しました。

Redirectを利用

Redirect permanent /ランチ/ //example.com/和食/ご飯/

Rewriteを利用

RewriteEngine on
RewriteBase /
RewriteRule ^ランチ/(.*)$ //example.com/和食/ご飯/$1 [R=301,L]

ページのリダイレクト

  • //example.com/ランチ/ハンバーグ.html →//example.com/料理/洋食.html に変更。

※日本語で記載しました。

Redirectを利用

Redirect permanent /ランチ/ハンバーグ.html //www.example.jp/料理/洋食.html

Rewriteを利用

RewriteEngine on
RewriteBase /
RewriteRule ^/ランチ/ハンバーグ.html //www.example.jp/料理/洋食.html [R=301,L]

特定のディレクトリをリダイレクトから除外

  • RewriteCond %{REQUEST_URI} !(^/除外ディレクトリ名/)

※日本語で記載しました。

ランチを除外する

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} !(^/ランチ/)
RewriteRule ^(.*) //www.example.com/$1 [R=301,L]

除外

{REQUEST_URI} !除外