Rewrite all requests to index.php with nginx Rewrite all requests to index.php with nginx nginx nginx

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;    }}