Rewrite all requests to index.php with nginx
Perfect solution I have tried it and succeed to get my index page when I have append this code in my site configuration file.
location / { try_files $uri $uri/ /index.php;}
In configuration file itself explained that at "First attempt to serve request as file, then as directory, then fall back to index.html in my case it is index.php as I am providing page through php code.
To pass get variables as well use $args
:
location / { try_files $uri $uri/ /index.php?$args;}
1 unless file exists will rewrite to index.php
Add the following to your location ~ \.php$
try_files = $uri @missing;
this will first try to serve the file and if it's not found it will move to the @missing
part. so also add the following to your config (outside the location
block), this will redirect to your index page
location @missing { rewrite ^ $scheme://$host/index.php permanent;}
2 on the urls you never see the file extension (.php)
to remove the php extension read the following:http://www.nullis.net/weblog/2011/05/nginx-rewrite-remove-file-extension/
and the example configuration from the link:
location / { set $page_to_view "/index.php"; try_files $uri $uri/ @rewrites; root /var/www/site; index index.php index.html index.htm;}location ~ \.php$ { include /etc/nginx/fastcgi_params; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/site$page_to_view;}# rewriteslocation @rewrites { if ($uri ~* ^/([a-z]+)$) { set $page_to_view "/$1.php"; rewrite ^/([a-z]+)$ /$1.php last; }}