【.htaccess】ページをリダイレクトさせる設定例|httpsページやトップページヘの転送

.htaccessは、Apacheを用いたWebサーバに、ディレクトリ単位で設置できる設定ファイル。

今回は、その.htaccessを利用し、ページをリダイレクトさせる設定例となります。

.htaccessでページをリダイレクトさせる設定例

.htaccessでは、変更する設定によってディレクティブと呼ばれる命令を記述します。また、.htaccessは配置したディレクトリと、その サブディレクトリすべてに適用されます。

.htaccessでページをリダイレクトさせるには、リクエストURLの書き換えなどの設定ができる、mod_rewriteモジュールのディレクティブを利用します。

以下、.htaccessでページをリダイレクトさせるディレクティブの構文の例となります。

httpページをhttpsページへリダイレクトする例

以下の構文は、httpページをhttpsページへリダイレクトする例となります。

RewriteEngine On

RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

サーバー変数

上記構文内の%{HTTPS}、%{HTTP_HOST}、%{REQUEST_URI}は、サーバー変数となり、それぞれ以下の値を取得します。

  • %{HTTPS}の値は、リクエストURLがSSL / TLSの場合はon 、それ以外の場合はoffとなります。
  • %{HTTP_HOST}の値は、リクエストURLのドメイン名の部分となります。
  • %{REQUEST_URI}の値は、リクエストURLのパス部分となります。

例で利用した以外のサーバ変数については、文末の参考サイト内を確認してみてください。

指定したページをトップページヘリダイレクトする例

以下の構文は、指定したページをトップページへリダイレクトする例となります。

例では、以下のいずれかの条件の場合にトップページへリダイレクトをしています。

  • リクエストURL内に、/author/●●●が含まれる場合(●●●は、任意の文字数の文字)
  • リクエストURLの末尾が、/page/0 の場合
RewriteEngine On

RewriteCond %{REQUEST_URI} ^/author/.*$ [OR]
RewriteCond %{REQUEST_URI} ^/page/0$ 
RewriteRule .* https://%{HTTP_HOST} [R=301,L]

例で利用したmod_rewriteモジュールについて

以下、例で利用したmod_rewriteモジュールのディレクティブのまとめとなります。

RewriteEngineディレクティブ

RewriteEngineは、URLの書き換え処理の有効・無効を設定します。

RewriteEngineの引数

引数にon を設定すると有効となりoffを設定すると無効となります。また、デフォルト値はoffとなります。

RewriteCondディレクティブ

RewriteCondは、続けて記述したRewriteRuleを適用する条件を、文字列・正規表現・サーバ変数などで指定します。

また、RewriteCondを続けて記述した場合、RewriteCond同士の関係はAND条件となります。

RewriteCondの引数

RewriteCondでは、第1引数に指定した文字列などが、第2引数に指定したパターンを満たす場合に、続けて記述しているRewriteRule を適用します。また、第3引数は任意でフラグを指定でき、パターンを満たす場合の条件を設定できます。

RewriteCondのフラグ

例で利用したRewriteCondのフラグは以下となります。

  • OR フラグは、次に指定したRewriteCondとの関係をOR条件とします。OR フラグを指定しない場合はAND条件となります。

RewriteCondの詳細や、例で利用した以外のフラグについては、文末の参考サイト内を確認してみてください。

RewriteRuleディレクティブ

RewriteRuleは、リダイレクトさせる条件を文字列・正規表現・サーバ変数などで指定します。

また、RewriteRuleを続けて記述した場合、記述した順番に処理を実行します。

RewriteRuleの引数

RewriteRuleでは、リクエストURLが、第1引数に指定したパターンを満たす場合に、第2引数に指定したURLにリダイレクトします。また、第3引数は任意でフラグを指定でき、リダイレクトに条件を設定できます。

RewriteRuleのフラグ

例で利用したRewriteRuleのフラグは以下となります。

  • R=301 は、301リダイレクトの指定
  • L フラグは、現在のRewriteRuleが条件にマッチした場合に、そこで処理を停止。(続けて記述したRewriteRuleは処理をしません。)

RewriteRuleの詳細や、例で利用した以外のフラグについては、文末の参考サイト内を確認してみてください。

まとめ

以上が例で利用したmod_rewriteのディレクティブとなります。その他のmod_rewriteのディレクティブについては、文末の参考サイト内を確認してみてください。

参考サイトなど

コメント投稿コメント投稿欄を開く

コメントは、項目欄(*は必須項目)を入力し、「コメントを送信」ボタンをクリックしてください。 (メールアドレスは公開されることはありません。コメントの公開は承認制となります。)

Twitterで返信する場合はこちらから。