nginxサーバーにリチウムをデプロイしたいのですが、ApacheとIISにのみ提供される構成があります。私は過去にさまざまなアプリケーション用にいくつかのnginxサーバー構成を正常に作成しましたが、これに苦労しています。
すでにnginxとリチウムのフォーラムでこの質問をしましたが、運がありません。
これは私がこれまでに作ったものの中で最高です。
root /var/servers/my_app/app/webroot;
location / {
index index.php;
try_files $uri $uri/ index.php;
}
location ~ \.php {
fastcgi_pass unix:/tmp/php.socket;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /var/servers/my_app/$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
}
問題は/(ルートページ)にあります。すべてのリンクにindex.phpが付加されます。たとえば、
www.example.com/something
私は得る
www.example.com/index.php/something
これがnginx構成に関連しているのか、それとも何かなのかわからないのですが、リチウムはApache/IIS環境を検出できない場合にそうします。いずれにせよ、私はそれを解決することはできません。
もう1つ、「www.example.com/test」に(直接URL入力を介して)アクセスすると、ページは正しくレンダリングされますが、「www.example.com/test/」(末尾にスラッシュが付いています)と「www.example。 com / test / anything_here "が壊れています-すべてのリンクが現在のURLに追加されます。たとえば、同じリンクを押すと、次のようになります。
www.example.com/test/
www.example.com/test/test
www.example.com/test/test/test
編集:構成を更新しまし た(編集が大幅に遅れて申し訳ありませんが、まだ行き詰まっていて、最近これを解決するために再開しました)
root /var/server/my_app/app/webroot/;
index index.php index.html;
try_files $uri $uri/ /index.php?$args;
location ~ \.php {
fastcgi_pass unix:/tmp/php.socket;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /var/servers/my_app/$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
}
location ~/\.ht {
deny all;
}
}
コメントで述べたように、これによりすべてのリンクにindex.phpが含まれるようになり、次のようになります。
www.example.com/index.php/something
www.example.com/index.php/stylesheet.css