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.