こんにちは。ぽこです!
今回は、ページのリダイレクトをできる、.htaccessの書き方についてお話しします。
書き方の例
.htaccessは次のように書くことができます。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_URI} !(^/aa/index.php) RewriteRule ^(.*)$ /aa/index.php [L] </IfModule> |
1行ずつ説明していきます。
説明
1 |
<IfModule mod_rewrite.c> |
これは、利用環境でmod_rewriteが使えるかどうかを確認しています。
使える場合にのみ中のコードを実行するため、エラーの発生を防ぐために記述したほうがよいでしょう。
1 |
RewriteEngine On |
これは、mod_rewriteの機能を有効化するという意味です。
1 |
RewriteBase / |
これは、Rewriteの処理後にベースとなるURLの指定をしています。
特に理由がなければ「RewriteBase /」と書くとよいでしょう。
このように書くと、どのディレクトリに配置してもドキュメントルートからのパスになるので、わかりやすいです。
1 |
RewriteCond %{REQUEST_URI} !(^/aa/index.php) |
ここからがRewrite処理になります。
RewriteCondでは、ルールの定義を行っています。
ここで指定した条件に一致する場合に、次の処理が実行されます。
今回の場合は、/aa/index.php以外、例えば/aa/bb/など、の場合に条件に一致します。
ちなみにここで/aa/index.php以外としているのは、リダイレクトの無限ループを防ぐためです。
1 |
RewriteRule ^(.*)$ /aa/index.php [L] |
ここで、URLの書き換えを行います。
こちらは^(.*)$を/aa/index.phpに書き換えるという意味です。