Pengantar
Secara default, next-sitemap menghasilkan file sitemap secara langsung di direktori public/
. Ini berarti bahwa lokasi penyimpanan sitemap standar akan berbentuk https://<nama situs web Anda>/sitemap.xml
.
Privasi Sitemap
Sitemap dapat berfungsi sebagai peta harta karun bagi web scraper, karena menyediakan daftar lengkap tautan di dalam sebuah situs web. Begitu scraper mengidentifikasi sitemap, mereka dapat mengakses hampir semua halaman situs.
Lokasi sitemap idealnya hanya diketahui oleh mesin telusur seperti Google. Ketika Google mengenali sitemap Anda, visibilitas situs Anda pada mesin telusur lain seperti Yahoo! Japan atau Bing juga meningkat, yang dapat meningkatkan SEO situs Anda. Tidak perlu mengungkapkan lokasi sitemap kepada scraper. Jika dibiarkan secara default, sitemap di /sitemap.xml
menjadi undangan terbuka untuk crawling tak terbatas oleh web scraper. Hal ini menekankan pentingnya mengubah lokasi penyimpanan sitemap default untuk mencegah akses mudah oleh scraper.
Mengubah Direktori Sitemap
Dengan perpustakaan next-sitemap, Anda dapat mengubah lokasi penyimpanan sitemap. Hal ini dapat dicapai dengan menentukan outDir dalam file next-sitemap.config.js
. Fitur ini memberikan fleksibilitas kepada pengguna untuk menyimpan sitemap di lokasi pilihan mereka.
Sebagai contoh, Anda dapat menentukan outDir
dalam file next-sitemap.config.js
seperti yang ditunjukkan di bawah ini. Ini akan mengarahkan output sitemap.xml
dan robot.txt
ke public/my-dir
.
/** @type {import('next-sitemap').IConfig} */
module.exports = {
siteUrl: 'https://io.traffine.com/',
generateRobotsTxt: true,
sitemapSize: 7000,
+ outDir: './public/my-dir'
};
Petunjuk Salah dalam robots.txt dan sitemap.xml
Masalah yang dihadapi oleh pengguna adalah bahwa robots.txt
dan sitemap.xml
tidak menunjuk dengan benar ke direktori yang ditentukan di outDir
. Mari lihat entri yang dihasilkan:
# *
User-agent: *
Allow: /
# Host
Host: https://hoge.jp
# Sitemaps
Sitemap: https://io.traffine.com/sitemap.xml # here is the problem
<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<sitemap><loc>https://io.traffine.com/sitemap-0.xml</loc></sitemap> <!-- Here is the problem -->
</sitemapindex>
Seperti yang terlihat, file-file ini salah menunjuk ke jalur seolah-olah dihasilkan di dalam /public
.
Kedua file tersebut seharusnya terlihat seperti ini:
# *
User-agent: *
Allow: /
# Host
Host: https://hoge.jp
# Sitemaps
- Sitemap: https://io.traffine.com/sitemap.xml # Here is the problem
+ Sitemap: https://io.traffine.com/my-dir/sitemap.xml
<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
- <sitemap><loc>https://io.traffine.com/sitemap-0.xml</loc></sitemap> <!-- Here is the problem -->
+ <sitemap><loc>https://io.traffine.com/my-dir/sitemap-0.xml</loc></sitemap>
</sitemapindex>
Solusi atas Masalah
Untuk memperbaiki masalah tersebut dengan arah robots.txt
dan sitemap.xml
, kita dapat menerapkan solusi yang melibatkan pembuatan dan penggunaan file JavaScript.
Pertama, siapkan file JavaScript bernama sitemap-replace.js
. Skrip ini akan membaca file robots.txt
dan sitemap.xml
yang ada, mengganti jalur yang salah dengan yang benar, dan kemudian menulis kembali data yang sudah diperbaiki ke dalam file-file tersebut. Berikut adalah langkah-langkahnya:
const replaceSitemap = async (fileName) => {
const fs = require('fs/promises')
const appRoot = require('app-root-path')
const subDirectory = 'my-dir' // Change this
const filePath = `${appRoot}/public/${subDirectory}/${fileName}`
const original = await fs.readFile(filePath, 'utf8')
const replacedData = original.replace(
/https\:\/\/io\.traffine\.com\/sitemap/g, // Change this
`https://io.traffine.com/${subDirectory}/sitemap` // Change this
)
await fs.writeFile(filePath, replacedData, 'utf8')
}
;(async () => {
await replaceSitemap('robots.txt')
await replaceSitemap('sitemap.xml')
})()
Selanjutnya, sesuaikan perintah postbuild
dalam package.json
untuk menjalankan skrip ini setelah perintah next-sitemap
. Hal ini memastikan bahwa skrip berjalan setiap kali Anda membangun proyek Anda, sehingga jalur sitemap Anda tetap menunjuk dengan benar ke direktori yang ditentukan.
{
...
"build": "next build",
- "postbuild": "next-sitemap --config next-sitemap.config.js"
+ "postbuild": "next-sitemap --config next-sitemap.config.js && node sitemap-replace.js"
...
}
Setelah menjalankan skrip ini, isi file robots.txt
dan sitemap.xml
akan diperbarui dengan benar untuk menunjuk ke direktori baru. File-file yang diperbarui akan terlihat seperti ini:
# *
User-agent: *
Allow: /
# Host
Host: https://io.traffine.com
# Sitemaps
Sitemap: https://io.traffine.com/my-dir/sitemap.xml
<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<sitemap><loc>https://io.traffine.om/my-dir/sitemap-0.xml</loc></sitemap>
</sitemapindex>
Dengan solusi ini, Anda sekarang dapat menjaga privasi lokasi sitemap Anda, sambil memastikan bahwa sitemap tersebut dapat diakses dengan benar oleh mesin telusur.
Referensi