Jika halaman yang ditunjuk oleh tautan berbeda memiliki banyak konten yang sama, fenomena ini disebut "konten duplikat". Jika sebuah situs web memiliki banyak konten yang berulang, mesin pencari akan menganggap bahwa nilai situs web tersebut tidak tinggi. Jadi kita harus berusaha menghindari segala jenis duplikat konten.
Konten duplikat di situs dinamis sering kali disebabkan oleh parameter URL, dan penulisan ulang URL akan memperburuk fenomena ini (yang cukup menarik, haha). Karena jika parameter URL asli digunakan, mesin pencari dapat membuat penilaian yang sesuai dan mengetahui bahwa konten duplikat disebabkan oleh parameter URL, dan secara otomatis menanganinya dengan menulis ulang URL akan menutupi parameter URL, yang akan membuat mesin pencari tidak melakukannya tidak mengenali parameter URL. Misalnya:
URL asli:
http://www.freeflying.com/articles.aspx?id=231&catelog=blog
http://www.freeflying.com/articles.aspx?id=231&catelog=news
URL setelah penulisan ulang URL:
http://www.freeflying.com/blog/231.html
http://www.freeflying.com/news/231.html
Isi halaman yang ditunjuk oleh URL tersebut sebenarnya sama, keduanya adalah artikel dengan id=231, namun artikel ini dirujuk oleh kolom blog dan berita karena berbagai alasan, URL final kami masih seperti yang ditampilkan di atas.
Ada dua cara untuk mengatasinya. Yang pertama adalah dengan menggunakan protokol robot untuk "mengecualikan" salah satunya, dan yang lainnya adalah mengalihkan salah satu URL secara permanen ke URL lain melalui 301.
Hari ini kita akan membahas tentang protokol robot terlebih dahulu. Sederhananya, robot mengacu pada mesin pencari. Bagi Google, kami juga menyebutnya "laba-laba". Laba-laba sangat sopan dan akan meminta pendapat Anda terlebih dahulu sebelum meng-crawl konten web Anda. Anda dan robot telah berkomunikasi berdasarkan protokol robot sebelumnya. Khusus untuk implementasi, ada dua cara:
1. Tambahkan teks robots.txt ke direktori root situs web, seperti:
#konten statis, larang semua halaman di bawah folder "Admin".
Agen pengguna: *
Larang: /Admin
Baris # menunjukkan komentar;
Agen-pengguna mengacu pada mesin pencari, * artinya untuk semua mesin pencari, Anda juga dapat menentukan mesin pencari tertentu, seperti Agen-pengguna: googlebot;
Disallow menentukan direktori atau halaman yang tidak boleh diakses. Catatan: 1. Teks ini peka huruf besar-kecil 2. Harus dimulai dengan "", yang menunjukkan direktori root situs web;
Seperti tujuan seri ini, kami fokus pada teknologi ASP.NET. Jadi untuk catatan lebih lanjut tentang teks robots.txt, silakan periksa http://www.googlechinawebmaster.com/2008/03/robotstxt.html
Tapi bagaimana kita menghasilkan file ini secara dinamis (sebenarnya ada beberapa kebutuhan untuk ini)? Mungkin yang langsung terpikirkan adalah operasi I/O, menulis file txt di direktori root..., tapi sebenarnya ada cara lain: menggunakan program pemrosesan umum (file .ashx), kodenya adalah sebagai berikut:
kode
<%@ WebHandler Language="C#" Kelas="Handler" %>
menggunakan Sistem;
menggunakan Sistem.Web;
Penangan kelas publik : IHttpHandler {
public void ProcessRequest (konteks HttpContext) {
Respon HttpResponse = konteks.Respon;
respon.Hapus();
//response.ContentType = "text/plain"; Jika Anda ingin menggunakan IE6 untuk melihat halaman, Anda tidak dapat membuat pernyataan ini karena alasan yang tidak diketahui.
//Dua kalimat berikut harus dihasilkan secara dinamis oleh database saat digunakan sebenarnya.
respon.Write("Agen pengguna: * n");
respon.Write("Larang: /news/231.html n");
//Rujuk ke konten file robot statis, yang menyimpan konten terlindung yang tidak akan berubah.
respon.WriteFile("~/static-robots.txt");
respon.Flush();
}
bool publik Dapat Digunakan Kembali {
mendapatkan {
kembali salah;
}
}
}
Secara umum, handler mengimplementasikan IHttpHandler. Di bagian UrlRewrite sebelumnya, kita berbicara tentang HttpModule. Faktanya, dalam siklus hidup aplikasi ASP.NET, ada konsep yang disebut "pipeline": permintaan HTTP melewati "pemfilteran". /processing" dari HttpModule, yang akhirnya mencapai bagian "prosesor" dari HttpHandle. HttpModule dan HttpHandle membentuk "pipa".
Jika Anda belum mengetahuinya, periksa kode sumber Halaman dan Anda akan menemukan bahwa Halaman juga mengimplementasikan IHttpHandler, jadi file *.aspx adalah HttpHandle yang paling umum digunakan. Namun Page bukan hanya HttpHandler, tetapi juga menyematkan peristiwa siklus hidup halaman yang kompleks, jadi dari perspektif penghematan sumber daya, sering kali saya juga dapat menggunakan file *.ashx () khusus yang lebih ringan untuk menyelesaikan beberapa tugas sederhana. Mirip dengan membuat file txt, kita juga dapat membuat kode verifikasi (file jpg), file xml, dll.
Maka hal selanjutnya yang harus dilakukan adalah URLRewrite:
kode
void Application_BeginRequest(pengirim objek, EventArgs e)
{
// Kode yang dijalankan saat startup aplikasi
Konteks HttpContext = HttpContext.Saat ini;
string currentLocation = konteks.Permintaan.Url.LocalPath;
if (currentLocation.ToLower() == "/website1/robots.txt")
{
konteks.RewritePath("~/Handler.ashx");
}
}
Dengan cara ini, laba-laba akan mengira bahwa memang ada file robots.txt di direktori root website.
2. Tambahkan tag META ke halaman yang perlu diblokir.
<meta id="meta" name="robot" content="noindex,nofollow" />
noindex berarti halaman tidak dapat diindeks
nofollow artinya halaman tersebut tidak bisa "diikuti" (akan dijelaskan secara detail di SEO Hack)
Ini adalah efek halaman statis. Jika Anda perlu membuatnya secara dinamis, caranya cukup sederhana:
kode
dilindungi kekosongan Page_Load (pengirim objek, EventArgs e)
{
HtmlMeta meta = HtmlMeta baru();
meta.Name = "robot";
meta.Konten = "noindex,nofollow";
this.Header.Controls.Add(meta);
}
Deskripsi, kata kunci, dll juga dapat ditentukan dalam meta, dan teknis penerapannya sama.
Jadi, bagaimana kita memilih di antara kedua metode tersebut? Beberapa saran saya:
1. Coba gunakan robots.txt yang dapat mengurangi beban website (walaupun sangat kecil haha), karena setelah spider melihat file robots.txt, ia tidak akan lagi meminta halaman terkait diblokir; gunakan metode meta, laba-laba harus terlebih dahulu meminta halaman tersebut, dan kemudian membuat keputusan untuk tidak mengambilnya kembali. Pada saat ini, permintaan Http telah dikirim, dan sumber daya sisi server telah terbuang sia-sia, jika terlalu banyak meta diblokir, itu juga akan menyebabkan laba-laba berdampak negatif pada situs web, mengurangi atau mengabaikan pengambilan dan penyertaan situs web;
2. Pencocokan teks robots.txt dilakukan dari kiri ke kanan, jadi tidak ada pencocokan reguler di sini! Jadi terkadang, kita harus menggunakan metode meta. Seperti URL di awal artikel kami:
http://www.freeflying.com/blog/231.html
http://www.freeflying.com/news/231.html
Terakhir, beberapa catatan:
1. Jangan menggunakan Kata Kunci dan Deskripsi yang sama pada semua halaman. Ini adalah kesalahan yang mudah kita lakukan, meskipun artikel.aspx adalah satu halaman, tetapi setelah menambahkan parameter url, itu menjadi ribuan halaman pada halaman tersebut, maka ribuan halaman akan memiliki Kata Kunci dan Deskripsi yang sama!
2. Cobalah untuk menghindari penggunaan SessionID berbasis URL. Ketika ASP.NET menonaktifkan cookie pada klien, Anda dapat menyiapkan SessionID berbasis URL dengan efek serupa:
http://www.freeflying.com/(S(c3hvob55wirrndfd564))/articles.aspx