目次

この記事の目次です。

1. htaccessでのリダイレクト設定

2. Redirectディレクティブ

3. RedirectMatchディレクティブ

4. mod_rewriteで高度なリダイレクトを行う

更新履歴

1. htaccessでのリダイレクト設定

.htaccessでは、Redirect、RedirectMatch、mod_rewriteのいずれかでリダイレクト設定が行えます。

リダイレクト

リダイレクトとは、URLリダイレクトのことで、ホームページの表示で指定したページから自動的に他のページに転送される、あるいは転送することをいいます。

リダイレクト設定

htaccessで設定することでWebサーバの機能を使用してリダイレクトが行えます。 リダイレクト設定は、その他にHTMLやJavaScript、あるいはPHPなどのサーバサイドのプログラムでも行えます。

2. Redirectディレクティブ

AにアクセスしたらBにリダイレクトというように単純なリダイレクトはRedirectディレクティブで行えます。

Redirect permanent /aaa.html https://www.bbb.com/bbb.html

Redirectディレクティブの書き方

Redirectディレクティブは古いURLを新しいURLにマップしてリダイレクトします。

Redirect permanent <古いURL(URLのパス部分)> <新しいURL(URL全部表記)>

古いURL(URLのパス部分)の書き方

古いURLは、%形式のURLエンコードされたURLはデコードされたURLを書きます。 また、/から始まるコンテンツのルートからのパスを書きます。相対パスは使用できません。

新しいURL(URL全部表記)の書き方

新しいURLはURL全部表記です。http://やhttps://のスキーム部分から、ドメイン名などのホスト名とURLのパス部分を全て書くのが基本です。 URLのパス部分からの表記で記述した場合、現在のスキームとホスト名が適用されます。

Redirectのpermanent部分のパラメータ

permanent部分のパラメータについてです。

permanent

permanentは、永久にリダイレクトをするステータス (301) を返します。これはリソースが永久に移動したということを意味します。 サイトリニューアルなどではSEOの評価を引き継ぐ目的で301を使うのが望ましいといわれています。

temp

tempは、パラメータ未指定の時に適用され、一時的なリダイレクトステータス (302) を返します。

seeother

seeotherは、リソースが他のもので置き換えられたことを意味するステータス (303) を返します。

gone

goneは、リソースが永久に 削除されたことを意味します。この指定を適用する場合は、 url引数は省略する必要があります。

URLが完全に一致したら適用される

Redirectディレクティブは、URLが完全に一致したら適用されます。部分一致で適用させたい場合は正規表現が使用できるRedirectMatchディレクティブを使用してください。

3. RedirectMatchディレクティブ

Apache HTTP Serverでは、より複雑な書き換えのために、 RedirectMatchディレクティブを提供しています。

以下は、Aサイトへの全てのリクエストを恒久的な301リダイレクトでBサイトのページにリダイレクトする場合の例です。

RedirectMatch permanent .* https://www.bbb.com/bbb.html

注意点としては、同じサイトのページへのリダイレクトの場合はループしてしまうため上記は使えません。 同じサイトのページへ全てリダイレクトする場合はmod_rewriteを使用する必要があります。

正規表現

正規表現ルールに基づいて、着信URL要求を動的に変更する方法を提供します。 ある特定の条件の文字列を表現するために正規表現という機能があります。mod_rewriteはPerl互換正規表現語彙を使います。

文字意味
.任意の1文字に一致f.tとした場合、fit
+直前の文字の1回以上の繰り返しa+とした場合、aa、aaaなど
*直前の文字の0回以上の繰り返しa*とした場合、a、aa、aaaなど
?直前の文字は省略可能a?aとした場合、a、aaなど
^文字列の先頭に一致^aとした場合aから始まる文字列
$文字列の末尾に一致a$とした場合、aで終わる文字列
( )( )内を1文字として扱う(ab)+とした場合、abab、abababなど
[ ][ ]の中のどれか1文字c[uoa]tの場合、cut、cot、catのいずれか
[^ ][ ]の中に無い1文字c[^/]tの場合c/t以外

4. mod_rewriteで高度なリダイレクトを行う

Apache HTTP Serverでは、複雑な条件で高度なリダイレクトを行う場合はmod_rewriteの機能を使います。 .htaccessを用いたURL書換えルールの設定の書き方についてまとめています。

詳細

更新履歴

更新履歴になります。

位置:トップリダイレクト