Getting WordPress 5.5 Sitemaps Working with Nginx

Using the nginx recommended config…

Login

Blog History

Using the nginx recommended config from https://www.nginx.com/resources/wiki/start/topics/recipes/wordpress/

The following config works. Please note the following considerations

  • You need to tell Nginx to send all requests for /robots.txt and /wp-sitemap*.xml to WordPress
  • Make sure you don't put your blocks for adding expires headers for xml before the location ~* /[wp\-]*sitemap.*\.xml { block otherwise you will see a raw Nginx File not found error.
# Upstream to abstract backend connection(s) for php
upstream php {
    server unix:/var/run/php-fpm/cgi.sock;
}
 
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 ~* /[wp\-]*sitemap.*\.xml {
        try_files $uri $uri/ /index.php$is_args$args;
        # return 200 "Match found \n";
        allow all;
        log_not_found off;
        access_log off;
    }
 
    location = /robots.txt {
        try_files $uri $uri/ /index.php$is_args$args;
        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$is_args$args;
    }
 
    location ~ \.php$ {
        #NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
        include fastcgi_params;
        fastcgi_intercept_errors on;
        fastcgi_pass php;
        #The following parameter can be also included in fastcgi_params file
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
 
    location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
        expires max;
        log_not_found off;
    }
}

0 Comments

Submit a Comment

Your email address will not be published. Required fields are marked *

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

The reCAPTCHA verification period has expired. Please reload the page.