Table of Contents
Webサーバーのリダイレクトを設定する mod_rewrite の構文である RewriteBase の意味についてです。
RewriteBase は、リダイレクト先のパスの基準となるパスを設定する文法です。
具体例
例えば、
http://sample.com/before/index.html
というURLにアクセスした場合、
http://sample.com/after/index.html
にリダイレクトさせたいとします。この処理を例に RewriteBase の動作を紹介します。
mod_rewrite を記載した .htaccess はルートディレクトリに配置されているものとします。
RewriteBaseを使用しない場合
RewriteBase を使用しない場合の mod_rewrite は以下の通りになります。
RewriteEngine on RewriteRule ^before/index\.html /after/index.html [R=301]
リダイレクト先のパスをルートから全て書きます。
RewriteBaseを使用した場合
RewriteBase によって、リダイレクト先の基準ディレクトリを指定した場合です。
RewriteEngine on RewriteBase /after/ RewriteRule ^before/index\.html index.html [R=301]
これは先程と全く同じリダイレクトが行われます。
/after/ がリダイレクト先の基準となりましたので、RewriteRule のリダイレクト先の指定(2つ目の指定)には /after/ を含める必要がありません。
RewriteBase は、移転元のパスの指定には何も影響を与えません。したがって、転移元のパス指定は RewriteBase を使わないときと同じです。
おしまい
以上が RewriteBase を使用することによるリダイレクト先の指定の変化です。
リダイレクト先の長いパスを何度も書かなければならない複雑なリダイレクトの際に利用できます。