|

Konfigurasi Nginx untuk sitemap WordPress

Ada pertanyaan yang masuk soal Sitemap di WordPress yang dibuat secara otomatis lewat plugin tidak ditemukan (404 Not Found) pada situs yang dihosting menggunakan Nginx. Jadi kasus ini paling sering terjadi pada website yang baru dimigrasikan dari shared hosting ke VPS dan si pemilik belum seberapa paham perbedaannya. Ya salah satunya tidak ada dukungan .htaccess yang menyebabkan masalah diatas karena biasanya sudah otomatis disettingkan pluginnya.

Setidaknya saya mendapatkan pertanyaan untuk 2 jenis plugin populer, yang satu memang khusus untuk pembuatan sitemap.xml dan yang satunya adalah plugin SEO paling terkenal.

Yang perlu dilakukan adalah mengedit konfigurasi virtual host Nginx, saya maksudkan adalah yang untuk website anda. Jadi bukan yang untuk setting Nginxnya sendiri. Kemudian tambahkan kode berikut dalam blok location / {}

  • Google XML Sitemaps
    rewrite ^/sitemap(-+([a-zA-Z0-9_-]+))?\.xml$ "/index.php?xml_sitemap=params=$2" last;
    rewrite ^/sitemap(-+([a-zA-Z0-9_-]+))?\.xml\.gz$ "/index.php?xml_sitemap=params=$2;zip=true" last;
    rewrite ^/sitemap(-+([a-zA-Z0-9_-]+))?\.html$ "/index.php?xml_sitemap=params=$2;html=true" last;
    rewrite ^/sitemap(-+([a-zA-Z0-9_-]+))?\.html.gz$ "/index.php?xml_sitemap=params=$2;html=true;zip=true" last;
  • Yoast SEO
    rewrite ^/sitemap_index.xml$ /index.php?sitemap=1 last;
    rewrite ^/([^/]+?)-sitemap([0-9]+)?.xml$ /index.php?sitemap=$1&sitemap_n=$2 last;

    atau menambahkan blok location sendiri:

    location ~ ([^/]*)sitemap(.*).x(m|s)l$ {
      	 rewrite ^/sitemap.xml$ /sitemap_index.xml permanent;
             rewrite ^/([a-z]+)?-?sitemap.xsl$ /index.php?xsl=$1 last;
      	 rewrite ^/sitemap_index.xml$ /index.php?sitemap=1 last;
      	 rewrite ^/([^/]+?)-sitemap([0-9]+)?.xml$ /index.php?sitemap=$1&sitemap_n=$2 last;}

Setelah itu restart Nginx dan tes kembali link sitemapnya. Seharusnya akan dapat diakses dengan normal.

3 Comments

  1. Saya sudah coba mas untuk plugin yoast kedua kode diatas (kode biasa dan blok location). Tetapi setelah saya cek dengan mengkases domainsaya/?sitemap=1 kok masih muncul ya. Padahal sesuai yoast seharusnya url diatas tidak muncul kalau sudah menggunakan kode itu. Apa yang salah ya mas?

Tinggalkan Balasan ke bagus Batalkan balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *