[mod_rewrite]リダイレクト先の基準パスを指定するRewriteBase

By | 2017年12月8日

サーバーのリダイレクト

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 を使用することによるリダイレクト先の指定の変化です。

リダイレクト先の長いパスを何度も書かなければならない複雑なリダイレクトの際に利用できます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*