htaccessですべてのURLに対して別の階層にリダイレクトさせるけどTopページは別にしたい

今回はApacheサーバを利用していて.htaccessですべてのURLに対して別の階層にリダイレクトさせるけどトップページはその対象ではないとき、どのように.htaccessを書けば良いのかについてご紹介いたします。



htaccessですべてのURLに対して別の階層にリダイレクトさせるけどTopページは別にしたい

最初に断っておきます。
この記事はかなり特殊な場合向けの記事となります。
私自身のメモ書きに近いですね。

.htaccessでRewriteRuleを設定して、特定の階層のみにすべてのURLに対してリダイレクトさせたい場合は、次のように書きますね。

しかし、トップページは別にしたいという思惑があったとします。

例として、「example.com」というドメインがあったとして、
example.com/*
は別の階層に繋がるようにしたいけど、
example.com/
だけはそのまま表示させたいという場合があったとします。

そんなときは、下記のように書きましょう。

ポイントは、RewriteCondを使って特定のURLのみ除くことです。

RewriteRuleの直前にRewriteCondを使って否定をとることで、そのURLのみ対象としないという設定をすることができます。
^/$
とすることで、正規表現でトップページを指定することができます。

また、
^/index.html$
も否定とすることでindex.htmlを対象外としなければならないことにも注意しましょう。

上記の.htaccessを設定することで、表題のすべてのURLに対して特定の階層に繋がるけど、トップページは別にするという要件を満たすことが可能となります。

終わりに

今回はApacheサーバを利用していて.htaccessですべてのURLに対して別の階層にリダイレクトさせるけどトップページはその対象ではないとき、どのように.htaccessを書けば良いのかについてご紹介いたしました。

最後までお読みいただきありがとうございます。
ブログやTwitterでのシェアOKです。
コメントもお待ちしております。
誤植や勘違いなどございましたらコメント欄にて教えていただけると幸いです。






Apache

Posted by ちこ