إذا كانت الصفحات المشار إليها بروابط مختلفة تحتوي على الكثير من نفس المحتوى، فإن هذه الظاهرة تسمى "المحتوى المكرر". إذا كان موقع الويب يحتوي على الكثير من المحتوى المتكرر، فسوف تعتقد محركات البحث أن قيمة موقع الويب ليست عالية. لذلك يجب أن نحاول تجنب جميع أنواع المحتوى المكرر.
غالبًا ما يحدث المحتوى المكرر على مواقع الويب الديناميكية بسبب معلمات عنوان URL، وستؤدي إعادة كتابة عنوان URL إلى تفاقم هذه الظاهرة (وهو أمر مثير للاهتمام للغاية، هاها). لأنه إذا تم استخدام معلمات URL الأصلية، فقد يصدر محرك البحث الأحكام المناسبة ويعلم أن المحتوى المكرر ناتج عن معلمات URL، ويتعامل معه تلقائيًا وفقًا لذلك؛ ستغطي إعادة كتابة عنوان URL معلمات URL، مما يجعل محركات البحث لا تفعل ذلك لا تتعرف على معلمات URL. على سبيل المثال:
عنوان URL الأصلي:
http://www.freeflying.com/articles.aspx?id=231&catelog=blog
http://www.freeflying.com/articles.aspx?id=231&catelog=news
عنوان URL بعد إعادة كتابة عنوان URL:
http://www.freeflying.com/blog/231.html
http://www.freeflying.com/news/231.html
محتوى الصفحات التي تشير إليها عناوين URL هذه هو نفسه في الواقع، وكلاهما مقال بالمعرف=231، ولكن تمت الإشارة إلى هذه المقالة بواسطة أعمدة المدونة والأخبار لأسباب مختلفة، ولا يزال عنوان URL النهائي كما هو موضح أعلاه.
هناك طريقتان للتعامل معها. إحداهما هي استخدام بروتوكول الروبوت "لاستبعاد" أحدهما، والأخرى هي إعادة توجيه أحد عناوين URL بشكل دائم إلى عنوان URL آخر من خلال 301.
سنتحدث اليوم عن بروتوكول الروبوت أولاً. لتبسيط الأمر، يشير الروبوت إلى محرك بحث بالنسبة لجوجل، نسميه أيضًا "العنكبوت". العناكب مهذبة للغاية وستطلب رأيك أولاً قبل الزحف إلى محتوى الويب الخاص بك. لقد تواصلت أنت والروبوت بناءً على بروتوكول الروبوت من قبل. بالنسبة للتنفيذ، هناك طريقتان:
1. أضف نص ملف robots.txt إلى الدليل الجذر لموقع الويب، مثل:
#محتوى ثابت، يمنع جميع الصفحات الموجودة ضمن مجلد "المسؤول".
وكيل المستخدم: *
عدم السماح: / المشرف
يشير السطر # إلى تعليق؛
يشير وكيل المستخدم إلى محرك البحث، * يعني بالنسبة لجميع محركات البحث، يمكنك أيضًا تحديد محرك بحث معين، مثل وكيل المستخدم: googlebot؛
يحدد عدم السماح الدلائل أو الصفحات التي لا يُسمح بالوصول إليها ملاحظة: 1. هذا النص حساس لحالة الأحرف 2. يجب أن يبدأ بـ ""، مما يشير إلى الدليل الجذر لموقع الويب.
مثل الغرض من هذه السلسلة، فإننا نركز على تقنية ASP.NET. لذلك للحصول على مزيد من الملاحظات حول نص ملف robots.txt، يرجى مراجعة http://www.googlechinawebmaster.com/2008/03/robotstxt.html
ولكن كيف يمكننا إنشاء هذا الملف ديناميكيًا (هناك في الواقع عدد قليل جدًا من الاحتياجات لهذا)؟ ربما ما نفكر فيه على الفور هو عمليات الإدخال/الإخراج، وكتابة ملف txt في الدليل الجذر...، ولكن هناك في الواقع طريقة أخرى: باستخدام برنامج معالجة عام (ملف .ashx)، يكون الكود كما يلي:
شفرة
<%@ WebHandler Language="C#" Class="Handler" %>
باستخدام النظام؛
باستخدام System.Web؛
معالج الطبقة العامة: IHttpHandler {
طلب معالجة الفراغ العام (سياق HttpContext) {
استجابة HttpResponse = context.Response;
استجابة. واضح ()؛
//response.ContentType = "text/plain"; إذا كنت تريد استخدام IE6 لعرض الصفحة، فلا يمكنك إجراء هذا البيان لأسباب غير معروفة.
// يجب أن يتم إنشاء الجملتين التاليتين ديناميكيًا بواسطة قاعدة البيانات قيد الاستخدام الفعلي.
Response.Write("وكيل المستخدم: * n");
Response.Write("عدم السماح: /news/231.html n");
// ارجع إلى محتوى ملف الروبوتات الثابت، الذي يخزن المحتوى المحمي الذي لن يتغير.
Response.WriteFile("~/static-robots.txt");
Response.Flush();
}
المنطق العام قابل لإعادة الاستخدام {
يحصل {
عودة كاذبة.
}
}
}
بشكل عام، يقوم المعالج بتنفيذ IHttpHandler، في قسم UrlRewrite السابق، تحدثنا عن HttpModule. في الواقع، يوجد في دورة حياة تطبيق ASP.NET مفهوم يسمى "خط الأنابيب": يمر طلب HTTP عبر "تصفية". / معالجة" لـ HttpModule، والتي تصل في النهاية إلى جزء "المعالج" من HttpHandle. يشكل HttpModule وHttpHandle "خط أنابيب".
إذا لم تكن على دراية به، فتحقق من الكود المصدري للصفحة وستجد أن الصفحة تطبق أيضًا IHttpHandler، لذا فإن ملفات *.aspx هي HttpHandle الأكثر استخدامًا. لكن الصفحة ليست مجرد HttpHandler، بل إنها تتضمن أيضًا أحداث دورة حياة الصفحة المعقدة، لذا من منظور توفير الموارد، يمكنني أيضًا في كثير من الأحيان استخدام ملف *.ashx () مخصص وخفيف الوزن لإنجاز بعض المهام البسيطة. كما هو الحال عند إنشاء ملف txt، يمكننا أيضًا إنشاء رموز التحقق (ملفات jpg) وملفات xml وما إلى ذلك.
ثم الشيء التالي الذي يجب فعله هو إعادة كتابة URL:
شفرة
باطلة Application_BeginRequest (مرسل الكائن، EventArgs e)
{
// الكود الذي يعمل عند بدء تشغيل التطبيق
HttpContext context = HttpContext.Current;
string currentLocation = context.Request.Url.LocalPath;
إذا (currentLocation.ToLower() == "/website1/robots.txt")
{
context.RewritePath("~/Handler.ashx");
}
}
بهذه الطريقة، سيعتقد العنكبوت أن هناك بالفعل ملف robots.txt في الدليل الجذر للموقع.
2. قم بإضافة علامة META إلى الصفحة التي تريد حظرها.
<meta id="meta" name="robots" content="noindex,nofollow" />
noindex يعني أنه لا يمكن فهرسة الصفحة
nofollow تعني أنه لا يمكن "متابعة" الصفحة (سيتم شرحها بالتفصيل في SEO Hack)
هذا هو تأثير الصفحة الثابتة، إذا كنت بحاجة إلى إنشائها ديناميكيًا، فالأمر بسيط جدًا:
شفرة
Page_Load باطلة محمية (مرسل الكائن، EventArgs e)
{
HtmlMeta meta = new HtmlMeta();
meta.Name = "الروبوتات";
meta.Content = "noindex,nofollow";
this.Header.Controls.Add(meta);
}
يمكن أيضًا تحديد الوصف والكلمة الرئيسية وما إلى ذلك في التعريف، والتنفيذ الفني هو نفسه.
إذن، كيف نختار بين الطريقتين؟ بعض اقتراحاتي:
1. حاول استخدام ملف robots.txt، والذي يمكن أن يقلل من تحميل موقع الويب (على الرغم من أنه صغير جدًا، هاها)، لأنه بعد أن يشاهد العنكبوت ملف robots.txt، لن يطلب الصفحات ذات الصلة المحظورة بعد الآن؛ باستخدام طريقة التعريف، يجب على العنكبوت أولاً أن يطلب الصفحة، ثم يتخذ قرارًا بعدم استردادها. في هذا الوقت، تم إرسال طلب Http، بالإضافة إلى إهدار الموارد من جانب الخادم، إذا كان ذلك كثيرًا إذا تم حظر التعريف، فسيؤدي ذلك أيضًا إلى أن يكون للعنكبوت تأثير سلبي على ظهور موقع الويب، أو تقليل أو التخلي عن استرجاع الموقع وإدراجه؛
2. تتم مطابقة نص ملف robots.txt من اليسار إلى اليمين، لذلك لا توجد مطابقة منتظمة هنا! لذلك في بعض الأحيان، يتعين علينا استخدام الطريقة الفوقية. مثل عنوان URL الموجود في بداية مقالتنا:
http://www.freeflying.com/blog/231.html
http://www.freeflying.com/news/231.html
وأخيرا، بعض الملاحظات:
1. لا تستخدم نفس الكلمة الرئيسية والوصف في جميع الصفحات، وهذا خطأ يمكن أن نرتكبه بسهولة. على الرغم من أن Articles.aspx عبارة عن صفحة واحدة، إلا أنها تصبح آلاف الصفحات بعد إضافة معلمات URL على الصفحة، فإن آلاف الصفحات سيكون لها نفس الكلمة الرئيسية والوصف!
2. حاول تجنب استخدام معرف الجلسة المستند إلى عنوان URL. عندما يقوم ASP.NET بتعطيل ملفات تعريف الارتباط على العميل، يمكنك إعداد معرف جلسة يستند إلى عنوان URL مع تأثير مماثل:
http://www.freeflying.com/(S(c3hvob55wirrndfd564))/articles.aspx