気ままなタンス*プログラミングなどのノートブック

プログラミングやRPGツクール、DTM等について、学んだことや備忘録をアウトプットとして残し、情報を必要としている誰かにとって「かゆいところに手が届く」ブログとなることを願いながら記事を書いています。

【.htaccess】URLにある文字を含む場合、そのままのパラメーターでリダイレクトする方法

スポンサーリンク

こんにちは。今回はApache HTTP Serverと.htaccessに関する記事です。

基本的にはWebフレームワークのURLに飛ばして問題ないけど、 あるURLの場合には静的なページに遷移させたいことってありますよね。

  • こんな感じ
    • http://hoge.co.jpで、CakePHPアプリケーションにアクセス
    • http://hoge.co.jp/any_str/hogera.htmlには、別の静的ファイルを配置してアクセスさせたい
    • (上記例ではコロンを全角にしています)

その場合、.htaccesに下記の記述を行うことで実現可能です。

  • .htaccessに以下を指定する
RewriteCond %{REQUEST_URI} /any_str/
RewriteRule ^(.*)$ $1 [L]

こうすることで、リクエストURIにany_strを含む場合、それ以降のRewriteRuleの評価をせず、リクエストされたURIに転送されるようになります。

具体的な利用例

CakePHPにおいて、ある文字を含む時はCakePHPのアプリケーションに転送させたくない場合

# CAKEPHPDIR/.htaccess
<IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteBase /
        RewriteCond %{REQUEST_URI} /any_str/
        RewriteRule ^(.*)$ $1 [L]

        RewriteRule ^$ app/webroot/ [L]
        RewriteRule (.*) app/webroot/$1 [L]
</IfModule>

CakePHP等のフレームワークとは別に、静的サイトやCGIアプリ等を配置している場合などに使えそうですね。