http://localhost/invo/ みたいにしたいってことです。
これApacheなら楽勝と思うんですけど、今回はnginx。
実はこれ丸コピで出来るんじゃないかと思ったんですけど、どうにもルーティングがうまくいかない。
しかたないので古い記憶引っ張り出してきて、CakePHPの時はどう書いてたかなー、なんて思いながらごちゃごちゃやりました。
前提条件
今回は実験用にinvoを配置したいと思います。
nginxのインストールは他の方が書かれた記事を参照していただき、phalconとphpのインストールはこれ見てください。
次、ディレクトリ構成です。
- invo は
/var/www/phalcon/invo
に配置する - php-fpm は
/var/run/php-fpm/phalcon.sock
で待ち構えてるとする
・・・ぐらいですかね?
設定ファイル
本題の設定ファイルです。必要最小限だと思います。
invo.conf
server {
listen 80;
server_name invo;
charset utf-8;
set $root_path '/var/www/phalcon/invo/public';
root $root_path;
index index.php;
location /invo {
alias $root_path;
index index.php;
if (!-e $request_filename) {
rewrite ^/invo/(.+)$ /invo/index.php?_url=/$1 last;
}
}
location ~ ^/invo/(.+\.php) {
alias $root_path/$1;
fastcgi_pass unix:/var/run/php-fpm-phalcon.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include /etc/nginx/fastcgi_params;
}
}
http://invo/invo にアクセスし、CSSが適用されたトップページが表示されることを確認してください。
続いて、メニューやらポチポチして、ちゃんとルーティングが適用されていることも確認してください。
ちなみにですが、http://invo/invo/index.php?_url=/about/index とかも動作します。
これどうにかならないですかね?
実はnginxの設定あんまり知らないので、ここ変とかいらないとか、もっといい方法があれば教えてくださいorz