Bisakah file robots.txt dan sitemap.xml menjadi dinamis melalui pengalihan .htaccess?


12

Saya memiliki situs multilanguage dan multidomain. Itu berjalan melalui instalasi CMS unik (Drupal), jadi saya punya direktori root tunggal. Jadi jika saya memiliki robots.txt statis, di sana saya hanya dapat menampilkan file untuk satu domain, sejauh yang saya tahu.

Bisakah saya meletakkan baris di .htaccess

Redirect 301 /robots.txt /robots.php

(atau instruksi yang setara, dan tolong, sebutkan yang mana jika diizinkan)

jadi itu dialihkan ke file php dinamis, di mana saya dapat melayani konten yang berbeda sesuai dengan $_SERVER['HTTP_HOST']?

Dan pertanyaan yang sama untuk sitemap.xml , jadi saya bisa menyajikan sitemap.php dinamis yang menunjukkan tautan berbeda untuk setiap domain berbeda.

Masalah tanpa menggunakan .txt dan .xml adalah, sebagaimana disebutkan, bahwa semua domain berbagi direktori fisik tunggal di komputer server.


Jawaban:


11

Anda dapat membuat file apa pun menjadi dinamis. Cara terbaik untuk melakukannya bukan melalui pengalihan, tetapi melalui aturan penulisan ulang.

RewriteRule ^robots\.txt$  /robots.php [L]

Dengan begitu, Anda memberi daya dengan skrip dinamis, tetapi URL tidak berubah. Sebagian besar perayap (termasuk Googlebot) akan mengikuti arahan ulang untuk robots.txt , tetapi beberapa perayap akan bingung jika Anda memperkenalkan arahan ulang.

Perhatikan bahwa meskipun Anda menggunakan PHP, robots.txt Anda akan terlihat statis untuk setiap perayap untuk setiap domain. Tidak masalah untuk menyajikan konten yang berbeda untuk domain yang berbeda, atau bahkan untuk agen pengguna yang berbeda. Namun, menyajikan konten yang berbeda secara acak, atau berdasarkan waktu dapat benar-benar membingungkan perayap mesin pencari dan mengacaukan SEO Anda.


Peta Situs tidak masalah untuk nama apa pun yang Anda inginkan. Anda dapat mengarahkan ulang itu, atau menggunakan aturan penulisan ulang untuk memberi daya secara dinamis pada URL yang sama. Anda juga dapat memberi nama mereka seperti

  • situs-a-sitemap.xml
  • situs-b-sitemap.xml
  • situs-c-sitemap.xml

Kemudian lihat di robots.txt :

Sitemap: http://www.example.com/example-sitemap.xml

atau kirimkan ke mesin pencari secara manual melalui alat webmaster atau konsol pencarian mereka.


Terima kasih atas tanggapan Anda. Harap perbaiki apa yang mungkin salah ketik, ini adalah instruksi w3d yang berfungsi, jadi kodenya harus RewriteRule ^robots\.txt$ robots.php [L]tanpa simbol \.
Cesar

Ya, versi dengan slash akan sesuai untuk file apache.conf Anda. Untuk .htaccess, Anda harus menghentikannya. Saya telah mengedit jawaban untuk menyertakan versi yang sesuai untuk .htaccess.
Stephen Ostermiller

@ Cesar Awalan slash pada pola (mis. ^/robots\.txt$) Akan diperlukan jika arahan ini ada di konfigurasi server, tapi ya, itu tidak akan cocok dengan per-direktori file .htaccess. Awalan garis miring pada substitusi (mis. /robots.php) Adalah opsional dalam kasus ini.
MrWhite

5

Ya, dengan cara yang sama permintaan apa pun bisa "dinamis".

Namun, Anda tidak akan mengalihkan (seperti pada contoh kode Anda), Anda harus menulis ulang secara internal menggunakan mod_rewrite. (Sama seperti apa yang Drupal mungkin sudah lakukan.)

Misalnya, di file .htaccess root Anda:

RewriteEngine On
RewriteRule ^robots\.txt$ robots.php [L]

RewriteEngine seharusnya hanya terjadi sekali (walaupun tidak terlalu penting jika terjadi beberapa kali).

Anda hanya perlu memastikan bahwa itu tidak bertentangan dengan arahan lain dalam file .htaccess Anda. Jadi, ini mungkin harus di dekat awal file, tentunya sebelum pengontrol depan Anda .


4

Membuat file sitemap menjadi dinamis - ini adalah cara yang baik untuk memperbarui secara otomatis peta situs Anda.

Membuat file robots.txt menjadi dinamis (untuk host yang sama! Melakukan ini untuk host terpisah pada dasarnya hanyalah file robots.txt yang normal untuk masing-masingnya). Kemungkinan akan menimbulkan masalah: itu tidak dirayapi setiap kali URL dirayapi dari situs , sehingga dapat terjadi bahwa versi "salah" di-cache. Misalnya, jika Anda membuat blok file robots.txt merayapi selama jam kerja, ada kemungkinan bahwa itu di-cache lalu, dan diikuti selama sehari - artinya tidak ada yang dirayapi (atau bergantian, di-cache ketika perayapan diizinkan). Google merayapi file robots.txt sekali sehari untuk sebagian besar situs, misalnya.


Saya tidak melihat perbedaan di sini antara statis atau dinamis. Saya juga akan menggunakan bagian dinamis untuk menawarkan versi yang berbeda sesuai dengan host yang berbeda, tetapi karena semua host berbagi direktori fisik yang sama di server komputer, itu adalah cara memiliki robots1.txt, robots2.txt, robots3.txt (angka artinya di domain mana kita berada).
Cesar

Saya tidak berpikir bahwa dinamika di sini berarti bahwa mereka ingin menyajikan konten yang berbeda setiap kali. Mereka hanya ingin mengaktifkannya melalui PHP sehingga mereka dapat membuat keputusan berdasarkan nama host dalam kode PHP. Saya sering membuat robots.txt dinamis untuk melayani aturan yang berbeda untuk agen pengguna yang berbeda.
Stephen Ostermiller

2
Ya, seperti yang saya sebutkan, melakukannya untuk beberapa host pada dasarnya seperti memiliki file robots.txt terpisah per host, yang tidak masalah. Namun, kami terkadang melihat situs yang mencoba mengontrol perayapan berdasarkan waktu menggunakan file robots.txt dinamis - yang menyebabkan banyak masalah.
John Mueller

Poin bagus. Saya telah mengedit jawaban saya yang diterima dengan peringatan untuk tidak membuat robots.txt sangat dinamis.
Stephen Ostermiller

0

Tidak perlu membuat sitemap.php karena: 1. Untuk setiap bahasa Anda dapat menjalankan file sitemap.xml terpisah dan menentukan masing-masing di konsol mesin pencari. 2. File sitemap standar dapat ditulis ulang secara berkala untuk memasukkan konten terkini dan membuatnya menjadi dinamis - untuk itu .php tidak diperlukan. Terserah mekanisme pembaruan internal dan cron untuk membuat ulang file yang sama dengan ekstensi standar .xml

File Sitemap.xml bersifat statis dan hanya pembaruan yang membuatnya dinamis - tidak diperbarui secara real time. Mungkin ada alasan untuk membuat mereka menulis ulang setiap menit, tetapi tidak perlu karena: 1. Google tidak akan memeriksanya dalam waktu kurang dari 1 jam sejak pengiriman terakhir 2. Ketika file sitemap besar, menulis ulang mereka sering kali akan membuat kinerja server kaput.

Ketika ada volume data yang besar dan itu membuat file sitemap lebih besar dari 50mb, sebuah sistem dengan banyak peta situs diperlukan. Ini berarti bahwa sitemap2,3 ... .xml akan menambahkan hingga ke daftar file utama, tetapi konten dalam file-file ini tetap juga sampai file-file ini dibuat kembali (dengan cron misalnya).

Juga untuk menyebutkan, bahwa sekali mesin pencari mengakses file, ia tidak akan kembali lagi dengan sangat cepat (kecuali jika dilakukan secara manual). Ini menegaskan bahwa tidak perlu dalam hal apa pun membuat pembaruan real-time dari sitemap.php, karena sitemap.xml normal dengan sendirinya bisa dinamis, memperbarui dengan konten baru sepanjang hari atau seminggu.

Saya tidak bisa memikirkan pro menggunakan sitemap.php. Tidak ada gunanya, karena ada cara lain yang lebih baik / tepat untuk menggunakan file-file ini.


Beberapa alasan dinamis mungkin lebih disukai: Peta Situs memakan banyak ruang disk sementara menghasilkan secara dinamis tidak membutuhkan apa pun. Peta Situs harus selalu diperbarui dan Peta Situs yang dinamis dapat menjadi cara mudah untuk melakukannya.
Stephen Ostermiller
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.