.htaccess でドキュメントルートを簡単に変更する
.htaccessでドキュメントルートを変更
やりたい事
たとえば http://sample.com/
のドキュメントルートをURLを変更する事無く
以下のpathに変更したい
変更前:/web/sample/index.html
変更後:/web/sample/ver2/index.html
手順
/web/sample/直下に「.htaccess」ファイルを作成。
内容
1 2 3 4 5 6 |
<IfModule mod_rewrite.c> RewriteEngine on RewriteBase / RewriteRule ^$ ver2/ [L] RewriteRule ^(.+)$ ver2/$1 [L] </IfModule> |
サーバのrestartは不要。
配置した途端に新しいディレクトリ(./ver2/)にルーティングされます。(お気軽だなぁ)
サイトやシステムを新バージョンに一発リリースする際に便利です。
おまけ
必要機会は少ないかもしれないが、おまけとして記載。
1 2 3 4 5 6 7 8 |
<IfModule mod_rewrite.c> RewriteEngine on RewriteBase / RewriteRule ^$ ver2/ [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.+)$ ver2/$1 [L] </IfModule> |
と、
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
をさらに設定することで、
同名のファイルやディレクトリが旧ルート直下にあった場合、
旧ディレクトリにルーティングされます。
例)
/web/sample/ver2/company
/web/sample/company
と有った場合、後者にルーティングされます。
なんで?RewriteCondの働きを知れば納得
RewriteCondはRewriteRuleを実行する上での前提条件を指定するディレクティブです。
ですのでRewriteCondはRewriteRuleの前に必ず書いて下さい。
上記のおまけの場合は、
!-f (同一ファイルが指定された場合は前提条件をNGとしRewriteRuleを適用しない)
!-d (同一ディレクトリが指定された場合は前提条件をNGとしRewriteRuleを適用しない)
というルールを与えています。
以上です
ご覧頂きありがとうございました。
コメント
この記事へのトラックバックはありません。
この記事へのコメントはありません。