Nginx use path as PHP parameter

I want to use URL path as URL param here is what I want to achieve

whenever a user enters example.com/abc then the request should automatically redirect to example.com/?abc without modifying the URL at the user's end. Currently nginx treating /abc as path and throwing 404.

Additionally, existing files should not be redirected, e.g. example.com/demo.php should be served as it is.


Solution 1:

You need to use a rewrite engine... for example like this (in server config):

After some research, this worked for me -

location / {
...
   if (-f $request_filename) {
        break;
    }
    rewrite ^/([^?].*) /?$1 permanent;


}

OLD answer -

server {
    ...
    if (!-f $request_filename){
       rewrite ^/(.*) /?$1;
    }
    
    ...
}

Solution 2:

Try the following:

server {
    root /example/path;
    server_name example.com;

    try_files $uri $uri/ /index.php?$uri;
}

This will make first nginx check if a file or directory matching the request URI part exists, and nginx serves it.

If there is no match, then the request is passed to /index.php with URI part as query argument.