Hi everyone,
I'm investigating moving one of my sites from another web server to Nginx. The app is a PHP app that uses the "front controller" pattern (everything routes via index.php), and the app takes care of URL routing and handling 404 errors.
My nginx site configuration looks something like this:
=====
server {
listen 8080;
server_name example.com;
root /var/www/example/live/public/;
index index.htm index.php;
location / {
try_files $uri /index.php;
}
location /assets/cache/ {
expires max;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass php;
fastcgi_param FUEL_ENV production;
}
}
upstream php {
server unix:/var/run/php5-fpm/www.sock;
}
=====
This works mostly as expected - Going to the root of the site hits the app's homepage, and the sub pages work (so example.com/about loads file). However if I go to a non-existent PHP file (like example.com/about.php), I get a white page that says "File not found." There's some legacy links that have ".php" at the end and routing these to the correct location is handled in the app itself. Because of my try_files setting, I expected this to go through index.php, like the URLs without extensions. However this doesn't seem to be the case. Anyone know how to configure it so it works this way?
tl;dr: How do I get requests to non-existent .php files to route via my index.php file?