NGINX rewriting rule for getting clean URL NGINX rewriting rule for getting clean URL wordpress wordpress

NGINX rewriting rule for getting clean URL


In summary, you need to let NGINX know that if that file doesn't exist, to not throw a 404 error, but rather call index.php. Wordpress is smart enough to parse the URL as parameters, and serve the correct page.

Add this snippet in your server configuration block:

location / {    try_files   $uri $uri/ /index.php?$args;}

Here is a complete example from nginx.org:

# Upstream to abstract backend connection(s) for phpupstream php {        server unix:/tmp/php-cgi.socket;        server 127.0.0.1:9000;}server {        ## Your website name goes here.        server_name domain.tld;        ## Your only path reference.        root /var/www/wordpress;        ## This should be in your http block and if it is, it's not needed here.        index index.php;        location = /favicon.ico {                log_not_found off;                access_log off;        }        location = /robots.txt {                allow all;                log_not_found off;                access_log off;        }        location / {                # This is cool because no php is touched for static content.                # include the "?$args" part so non-default permalinks doesn't break when using query string                try_files $uri $uri/ /index.php?$args;        }        location ~ \.php$ {                #NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini                include fastcgi.conf;                fastcgi_intercept_errors on;                fastcgi_pass php;        }        location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {                expires max;                log_not_found off;        }}