ZendFrameworkの環境変数APPLICATION_ENVを設定する

ZendFrameworkでは、index.phpにもともと書いてある記述に以下の環境変数に関わるものがあります。

/ Define application environment
defined('APPLICATION_ENV')
    || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));

APPLICATION_ENVが設定されてなかったら、’production’ という文字列を、APPLICATION_ENVとして設定するという内容です。このAPPLICATION_ENVはどこで使われているかというと、Bootstrap内で、application.iniを読み込む際に、パラメタとして渡されています。

application.iniは、DB接続設定等を書くファイルで、APPLICATION_ENVの値を、本番環境、テスト環境等で変えることによって、ファイルを編集することなく、DB接続先の設定を環境に合ったものに設定することができます。iniファイルの書き方は、こちらをご参照ください(http://framework.zend.com/manual/1.11/ja/zend.config.adapters.ini.html)

今回、/etc/sysconfig/httpd に以下の記述を追加すると、apacheにて環境変数を追加することができました。

export APPLICATION_ENV="development"

.htaccessを使うと、”setEnv”を使って記述することもできます。その場合の書き方は以下になります。

setEnv APPLICATION_ENV development

これまで、.htaccessを使ったやり方のみでやってきて、/etc/sysconfig/httpd を編集する方法を知りませんでした。

htaccessでredirectする際に、パラメタ(query string)を引き継ぐ

wordpressを使うとき等に、htaccessにはお世話になってますが、以前$_GETをrewrite_condでひっかけて、redirect先へ引き継ごうとして、断念していました。
どうしても、正規表現でquery string(?key=valueの部分)がひっかけれなくて。

その時は無理矢理、http://test.com/key/value/の形式にリダイレクトして、プログラム側で、REQUEST_URIから、パラメタ名と、値を取得したんですが、今回いいものを見つけました。

それが、QSAオプション。Query Strins Appendの略です。
これをつけておくと、リダイレクトをかけても、そのままquery stringも引き継いでくれます。しかも、redirect時に、自分でquery stringを付け足しても、うまいこと後付してくれる賢さです。

http://www.hoge256.net/2008/04/119.html

サンプルはこんな感じ。

RewriteEngine On

RewriteCond %{REQUEST_URI} ^/test/
RewriteCond %{REQUEST_URI} !\.(js|ico|gif|jpg|png|css|html)$
RewriteRule ^(.*)$ / [P,L,QSA]