.htaccessリダイレクトの基本的な書き方
.htaccessリダイレクトの基本的な書き方についてまとめました。
.htaccessリダイレクトの基本的な書き方
1 2 3 4 5 6 |
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond 条件 RewriteRule ルール </IfModule> |
IfModule mod_rewrite.c
mod_rewrite とは、Apacheというhttpサーバ上で、「URLの書き換え・リダイレクト処理」を行うためのモジュールです。
<IfModule mod_rewrite.c>
</IfModule>
で囲んだコードは、mod_rewriteが有効の場合のみ処理が実行されます。
mod_rewriteが無効の場合は処理が無視されます。
RewriteEngine
On でmod_rewriteの機能を有効化します。
Off でmod_rewriteの機能を無効化します。
RewriteBase
RewriteBaseは、リダイレクト先のベースとなるパスを指定します。
RewriteBaseを省略した場合、.htaccessを設置したディレクトリからの相対パスになります。
RewriteBase / とした場合、どのディレクトリに.htaccessを設置した場合でも必ずドキュメントルートからのパスになります。
RewriteCond
URLの書き換えを行う条件を定義します。
RewriteRuleの前に記述します。
RewriteCond で指定した条件を満たした場合のみ、RewriteRule が実行されます。
RewriteRule
URLの書き換えを行うための構文を定義します。
フラグ
RewriteCond 条件 [OR]
RewriteRule ルール [L]
RewriteCondやRewriteRuleの末尾にある[]をフラグと言います。
フラグは多数存在します。
フラグの使用例
RewriteCond 条件① [OR]
RewriteCond 条件②
RewriteRule ルール [R=301,L]
- [OR]
- いずれかのRewriteCond(条件)を満たす場合、処理を行う
- [R=301]
- R=Redirectの意味。[R=301][R=302]のようにリダイレクトコードを付加できます。[R=301]は301リダイレクトを行います。[R]のみは302扱いとなります。
- [L]
- L=Lastの意味。RewriteRuleの条件にマッチした場合、以降のRewriteRuleを処理しない
フラグを複数指定する場合は、,(カンマ)で区切ります。
301リダイレクトと302リダイレクトの違い
・301リダイレクト
恒久的なリダイレクト。
ドメイン変更やリニューアルなどにより、ドメインやURLが完全に変わる場合などに使用します。
・302リダイレクト
一時的なリダイレクト。
およそ数日~2週間といった短期間のリダイレクトに使用します。
サイトのメンテナンス中にメンテナンスにリダイレクトする場合、スマホサイトへの転送をする場合などに使用します。