Score:0

Rewrite rule not woking on Nginx

in flag

I want to redirect from /sitemap.xml to /sitemap_index.xml.

So, I contacted the plugin developer and received the following rewrite rule.

    # START Nginx Rewrites for Rank Math Sitemaps
    rewrite ^/sitemap_index.xml$ /index.php?sitemap=1 last;
    rewrite ^/([^/]+?)-sitemap([0-9]+)?.xml$ /index.php?sitemap=$1&sitemap_n=$2 last;
    # END Nginx Rewrites for Rank Math Sitemaps

I put this rewrite rule in two places as shown below but it doesn't work.


server {

    # START Nginx Rewrites for Rank Math Sitemaps
    rewrite ^/sitemap_index.xml$ /index.php?sitemap=1 last;
    rewrite ^/([^/]+?)-sitemap([0-9]+)?.xml$ /index.php?sitemap=$1&sitemap_n=$2 last;
    # END Nginx Rewrites for Rank Math Sitemaps
}

server {
    location / {
        try_files $uri $uri/ /index.php?$args;       
        # START Nginx Rewrites for Rank Math Sitemaps
        rewrite ^/sitemap_index.xml$ /index.php?sitemap=1 last;
        rewrite ^/([^/]+?)-sitemap([0-9]+)?.xml$ /index.php?sitemap=$1&sitemap_n=$2 last;
       # END Nginx Rewrites for Rank Math Sitemaps
    }
}

I've tried other nginx servers because there is a problem with the configuration of my Nginx server, but it doesn't work either.

nginx version: nginx/1.21.6
nginx version: nginx/1.21.4

Can someone tell me which part should I change to solve this problem?

Or

is there any other way to redirect?

full server block


fastcgi_cache_path /dev/shm/nginx/ levels=1:2 keys_zone=seoartgallery.com:100m max_size=1g inactive=1440m use_temp_path=off;

map $http_accept $suffix {
~image/webp    .webp;
default        '';
    }


server {
    listen       80;
    root /var/www/seoartgallery.com/htdocs;
    server_name  seoartgallery.com www.seoartgallery.com cdn.seoartgallery.com www.cdn.seoartgallery.com;
     add_header  Strict-Transport-Security "max-age=0;";
    
    location = /seo2.txt{}
    location = /seo1.txt{}
    location = /daumreviews.txt{}
    location = /naverseo.txt{}
 
    location = /npay_product_info{
    }
    
    location = /npay_product_info.xml{
    }
    
    location ~ \.(jpg|jpeg|gif|webp)$ {
        try_files $uri =404;
        break;
    }
  
   location /{
            return 301 https://$server_name$request_uri;
        }

}


server {
    listen       80;
    server_name artist.seoartgallery.com www.artist.seoartgallery.com;
    location /{
            return 301 https://$server_name$request_uri;
        }

}



##여기서부터 세오아트 본 홈페이지 설정




server {
    listen       443 ssl http2;
    listen [::]:443 ssl http2;
    server_name  seoartgallery.com www.seoartgallery.com link.seoartgallery.com www.link.seoartgallery.com;
    root /var/www/seoartgallery.com/htdocs;
 
    index  index.php index.html index.htm;
    
    # START Nginx Rewrites for Rank Math Sitemaps
    rewrite ^/sitemap_index.xml$ /index.php?sitemap=1 last;
    rewrite ^/([^/]+?)-sitemap([0-9]+)?.xml$ /index.php?sitemap=$1&sitemap_n=$2 last;
    # END Nginx Rewrites for Rank Math Sitemaps




    ssl_certificate "/etc/letsencrypt/live/seoartgallery.com/fullchain.pem";
    ssl_certificate_key "/etc/letsencrypt/live/seoartgallery.com/privkey.pem";
    ssl_dhparam "/etc/ssl/certs/dhparam.pem";
    
    # Set caches, protocols, and accepted ciphers. This config will merit an A+ SSL Labs score.
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 3m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers 'ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:!ADH:!AECDH:!MD5';
    ssl_session_tickets off;
    ssl_ecdh_curve X25519:prime256v1:secp521r1:secp384r1;
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_trusted_certificate /etc/letsencrypt/live/seoartgallery.com/chain.pem;
    resolver 8.8.8.8 8.8.4.4 valid=300s;
    resolver_timeout 5s;
    ssl_buffer_size 4k;




  location ~ /wp-content/(?<path>.+)\.(?<ext>jpe?g|png|gif)$  {
        add_header Vary Accept;
                expires 365d;
       try_files /wp-content/uploads-webpc/$path.$ext$suffix /wp-content/$path.$ext$suffix $uri =404;
    }


    client_body_in_file_only clean;
    client_body_buffer_size 16k;
    send_timeout 30s;
    
    access_log off;
    error_log  /var/log/nginx/seoartgallery.com.error.log;

        set $skip_cache 0;

        if ($request_method = POST) {
                set $skip_cache 1;
               set $skip_reason "POST";

        }
        if ($query_string != "") {
                set $skip_cache 1;
               set $skip_reason "QUERY_STRING";

        }
        if ( $cookie_woocommerce_items_in_cart = "1" ){ 
        set $skip_cache 1; 
       set $skip_reason WP_WooCommerce;

        } 
        if ( $cookie_woocommerce_cart_hash = "1" ){ 
        set $skip_cache 1; 
       set $skip_reason WP_WooCommerce;

        } 
        if ( $cookie_wp_woocommerce_session_[a-z0-9] = "1" ){ 
        set $skip_cache 1; 
           set $skip_reason WP_WooCommerce;
        } 
        if ( $cookie_wp_automatewoo_visitor_[a-z0-9] = "1" ){ 
        set $skip_cache 1; 
           set $skip_reason automatewoo;
        } 
        if ( $cookie_wp_automatewoo_session_started = "1" ){ 
        set $skip_cache 1; 
           set $skip_reason automatewoo;
        } 
        
    # WooCommerce-specific cache skip rules
    if ($request_uri ~* "/my-account-2.*|/thskan.*|/store.*|/cart.*|/my-account.*|/checkout.*|/addons.*") {
    set $skip_cache 1;
       set $skip_reason WP_WooCommerce;
    }

    if ( $arg_add-to-cart != "" ) { 
    set $skip_cache 1; 
       set $skip_reason add-to-cart;
    }
    if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wp_automatewoo_session_started|wp_automatewoo_visitor_[a-z0-9]|arlsf_c|wp_automatewoo_[a-z0-9]|yith_wcwl_products|wordpress_no_cache|wordpress_logged_in|woocommerce_items_in_cart|woocommerce_cart_hash|tinv_wishlistkey") {
            set $skip_cache 1;
           set $skip_reason cookie;
    }
    
    if ($request_uri ~* "(/my-account-2/|/thskan/|/my-account/|pum-[a-z0-9]|pum_[a-z0-9]|/checkout/|/cart/|/wp-admin/|/xmlrpc.php|/wp-(app|cron|login|register|mail).php|wp-.*.php|/feed/|index.php|wp-comments-popup.php|wp-links-opml.php|wp-locations.php|sitemap(_index)?.xml|[a-z0-9_-]+-sitemap([0-9]+)?.xml)") {
            set $skip_cache 1;
           set $skip_reason uri;

    }

    location ~ [^/]\.php(/|$) {
        fastcgi_split_path_info ^(.+?\.php)(/.*)$;
        if (!-f $document_root$fastcgi_script_name) {
            return 404;
        }

        fastcgi_read_timeout 300;
        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
        fastcgi_index index.php;
        fastcgi_buffers 64 16k; # default 8 4k
 
        #이 아래는 fastcgi 추가로 입력한것.
        fastcgi_buffer_size 32k;
        
        fastcgi_cache_bypass $skip_cache;
        fastcgi_no_cache $skip_cache;
        fastcgi_cache seoartgallery.com;
        fastcgi_cache_valid 200 1440m;
        
        fastcgi_cache_min_uses 1;
        fastcgi_cache_lock on;
        
        add_header X-FastCGI-Cache $upstream_cache_status;
        add_header WP-Bullet-Skip $skip_reason;

        fastcgi_cache_valid 404 1m;
        fastcgi_cache_valid 301 302 500 502 504 30m;

       include fastcgi_params;
    }   
        



    
    # Block dot file (.htaccess .htpasswd .svn .git .env and so on.)
    location ~ /\. {
        deny all;
    }
 
    # Block (log file, binary, certificate, shell script, sql dump file) access.
    location ~* \.(log|binary|pem|enc|crt|conf|cnf|sql|sh|key|yml|lock)$ {
        deny all;
    }
    
 
    # Block access
    location ~* (composer\.json|composer\.lock|composer\.phar|contributing\.md|license\.txt|readme\.rst|readme\.md|readme\.txt|copyright|artisan|gulpfile\.js|package\.json|phpunit\.xml|access_log|error_log|gruntfile\.js)$ {
        deny all;
    }
 
    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }
 
location /test5{
        try_files $uri $uri/ /test5/index.php?$args;

        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/run/php/php7.4-fpm.sock;
        }

}
 
   location ^~/.well-known/apple-developer-merchantid-domain-association {
        allow all;
  }


     location ~* \.(?:ttf|ttc|otf|eot|woff|woff2|font.css|css|js)$ {
    add_header Access-Control-Allow-Origin "*";
    expires max;
    }
 
     client_max_body_size 100M;
     
     

    location / {
        try_files $uri $uri/ /index.php?$args;       
        add_header Access-Control-Allow-Origin *;
        

    }

    location = /wp-login.php {
    limit_req  zone=one burst=5 nodelay;
    }

    # Allow Lets Encrypt Domain Validation Program
    location ^~ /.well-known/acme-challenge/ {
        allow all;
    }
    
    
      # Rocket-Nginx configuration
    include rocket-nginx/conf.d/default.conf;
     include optimization/*.conf;
    #include conf.d/Fastcgi.conf;
}




us flag
Do you want to do a HTTP redirect or nginx internal redirect?
in flag
Hi @TeroKilkanen , I have already written a redirect to https when connecting via http. For this problem, I only want to redirect to https://example.com/sitemap_index.xml when access to https://example.com/sitemap.xml.
us flag
Sorry but that does not answer my question. Do you want a HTTP redirect response, where a 301 or 302 redirect is sent to the visitor? Or do you want the URL to directly serve the other file?
mangohost

Post an answer

Most people don’t grasp that asking a lot of questions unlocks learning and improves interpersonal bonding. In Alison’s studies, for example, though people could accurately recall how many questions had been asked in their conversations, they didn’t intuit the link between questions and liking. Across four studies, in which participants were engaged in conversations themselves or read transcripts of others’ conversations, people tended not to realize that question asking would influence—or had influenced—the level of amity between the conversationalists.