چگونه Robots.txt به جنگو اضافه کنیم ؟
مقدمه
سلام و عرض ادب خدمت تمامی شما مخاطبین خوب وبسایت پایتونی ها با یک مقاله آموزشی دیگه از سری مقاله های آموزش طراحی وبسایت با پایتون در خدمتون هستیم در این مقاله می خواهیم نحوه اضافه کردن فایل Robot را به وبسایت خود بیاموزیم.
فایل robots.txt یک فایل متنی استاندارد است که به خزندههای موتورهای جستجو میگوید به چه صفحاتی میتوانند دسترسی داشته باشند، خراش دهند و در نهایت در نتایج موتور جستجوی خود فهرست شوند.
این فایل در آدرس اصلی سایت شما، https://domain.com/robots.txt ، فهرست شده است و می تواند به راحتی به پروژه جنگو شما اضافه شود.
مطمئن شوید که برای هر چیزی که به فایل robots.txt اضافه شده است از حروف و املای صحیح استفاده کنید وگرنه به درستی کار نخواهد کرد.
یک فایل robots.txt ایجاد کنید
env > mysite > main > templates > main > (New File) robots.txt
User-Agent: [name of search engine crawler] Disallow: [disallowed URL] Disallow: [disallowed URL] Sitemap: https://domain.com/sitemap.xml
ابتدا یک الگوی جدید به نام فایل robots.txt در پوشه قالب برنامه خود ایجاد کنید، همان فهرستی که همه قالب های HTML شما وجود دارد.
ساختار اصلی فایل robots.txt ، عامل کاربر، فهرستی از اسلاگهای URL غیرمجاز، و سپس URL نقشه سایت را مشخص میکند.
مطمئن شوید که آن را به درستی نامگذاری کنید و فقط از حروف کوچک استفاده کنید. اگر املا یا تغییری در حروف وجود داشته باشد، فایل توسط خزنده های موتورهای جستجو پیدا نمی شود.
نحو برای robots.txt
كارگزاران
عامل کاربر نام خزنده وب موتور جستجو است. خزنده های وب نیز معمولاً به عنوان ربات یا عنکبوت شناخته می شوند زیرا صفحات را در اینترنت می خزند و محتوای صفحه را برای نمایه سازی موتور جستجو کپی می کنند.
تعیین یک عامل کاربر
User-Agent: Googlebot
اگر به دنبال تنظیم قوانین برای یک خزنده خاص هستید، نام خزنده های وب را به عنوان عامل کاربر فهرست کنید.
تعیین بیش از یک عامل کاربر
User-Agent: Googlebot User-Agent: Bingbot User-Agent: Slurp
اگر می خواهید قوانین برای چندین خزنده اعمال شوند، نام هر خزنده وب را به عنوان یک عامل جداگانه فهرست کنید. مثال بالا خزندههای وب Google، Bing و Yahoo را فهرست میکند.
مشخص کردن تمام عوامل کاربر
User-Agent: *
اما صدها خزنده وب و ربات در اینترنت وجود دارد، بنابراین اگر عامل کاربر خاصی را در ذهن ندارید، تمام خزنده های وب را به عنوان عامل کاربر معرفی کنید.
یک علامت ستاره، که به عنوان wildcard نیز شناخته میشود، برای عامل کاربر بنویسید تا تمام خزندههای وب را شامل شود.
نشانیهای اینترنتی مجاز نیست
ورودیهای غیرمجاز بعد از عامل کاربر قرار میگیرند، و به خزنده اجازه میدهد بداند به کدام URLها نمیتواند دسترسی داشته باشد یا آنها را خراش دهد. مراقب باشید هیچ صفحه یا زیر شاخه ای را که می خواهید در نتایج جستجوی گوگل یا هر مرورگر دیگری نمایش داده شود مسدود نکنید.
غیر مجاز کردن یک URL
User-Agent: * Disallow: /page
اگر صفحه https://domain.com/page را در سایت خود دارید و می خواهید ایندکس نشود، فقط باید Slug را اضافه کنید /page
.
غیر مجاز کردن چندین URL
User-Agent: * Disallow: /page1 Disallow: /page2
هر URL به ورودی غیر مجاز خود نیاز دارد. هیچ محدودیتی برای تعداد URL های غیر مجاز در فایل robots.txt وجود ندارد.
غیر مجاز کردن دایرکتوری و همه زیرشاخه ها/صفحات آن
User-Agent: * Disallow: /directory/
همچنین می توانید دایرکتوری هایی را در لیست غیر مجاز اضافه کنید.
به عنوان مثال، اگر URL https://domain.com/directory را دارید و صفحه https://domain.com/directory/page1 و زیر شاخه https://domain.com/directory/subdirectory را در خود دارید، فهرست دایرکتوری اصلی را در دو اسلش رو به جلو فهرست کنید.
URL دایرکتوری به همراه هر صفحه URL و زیر شاخه ها اکنون در ورودی گنجانده شده است.
همچنین محدودیتی برای تعداد دایرکتوری های غیر مجاز در فایل robots.txt وجود ندارد.
غیر مجاز کردن کل سایت
User-Agent: * Disallow: /
اگر نمی خواهید هیچ یک از وب سایت شما خزیده شود، یک اسلش رو به جلو به ورودی غیر مجاز اضافه کنید. شلاق رو به جلو نشان دهنده دایرکتوری ریشه وب سایت شما است.
با این حال، اگر انتخاب کنید که هیچ صفحهای در سایت شما خزیده نشود، سایت شما در نتایج موتورهای جستجو ظاهر نمیشود و بر SEO شما تأثیر منفی میگذارد.
اجازه ندادن هیچ چیز
User-Agent: * Disallow:
در نهایت، اگر میخواهید تمام سایت شما در دسترس خزندههای وب باشد، چیزی را در کنار غیر مجاز فهرست نکنید.
نشانیهای وب با پایان دادن مجاز نیست
عدم مجاز کردن URL ها بر اساس نوع فایل
User-Agent: * Disallow: /*.xls$
برای غیرمجاز کردن نشانیهای اینترنتی با انتهای یکسان، یک اسلش رو به جلو با علامت ستاره و به دنبال آن یک فاصله، نام انتهای URL دقیق و علامت دلار اضافه کنید.
اجازه دادن به تصاویر
غیر مجاز کردن تصاویر
User-Agent: Googlebot-Image Disallow: /images/photo.jpg
برای مثال، اگر نمیخواهید Google Images تصاویر سایت شما را خراش دهد، یک ورودی غیر مجاز اضافه کنید که URL تصویر را فهرست میکند.
اجازه دادن به URL ها
اجازه دادن به یک صفحه در یک فهرست غیر مجاز
User-Agent: * Disallow: /directory/ Allow: /directory/page
اگرچه کمتر مورد استفاده قرار می گیرد، ورودی های اجازه برای دسترسی خزنده های وب به یک زیر شاخه یا صفحه در یک فهرست غیر مجاز استفاده می شود.
با استفاده از همان دایرکتوری قبلی، یک ورودی مجاز اضافه کنید که به خزندههای وب اجازه دسترسی به صفحه https://domain.com/directory/page را میدهد .
اکنون خزنده ها می توانند به این صفحه دسترسی داشته باشند در حالی که هنوز به دایرکتوری اصلی یا هر یک از صفحات و زیر شاخه های دیگر آن دسترسی ندارند.
چندین گروه در robots.txt
افزودن چندین گروه در robots.txt
# Group 1 - Google User-Agent: Googlebot Disallow: /directory/ Disallow: /page1 Disallow: /page2 # Group 2 - Bing User-Agent: Bingbot Disallow: /directory/ Allow: /directory/page
یک فایل robots.txt همچنین میتواند شامل چندین گروه باشد که هر کدام دارای عامل کاربر خاص خود و آدرسهای اینترنتی غیرمجاز هستند.
نقشه سایت
اضافه کردن نقشه سایت
User-Agent: * Disallow: /directory/ Disallow: /page1 Disallow: /page2 Sitemap: https://domain.com/sitemap.xml
آخرین چیزی که به پایین فایل اضافه می شود URL نقشه سایت است، پیوندی به یک فایل XML که خزنده های وب برای خزیدن هوشمندانه صفحاتی که شما در سایت خود مهم می دانید، می خوانند.
اگر نقشه سایتی برای پروژه جنگو خود ایجاد نکرده اید، به نحوه ایجاد نقشه سایت در جنگو بروید .
یک مسیر URL به robots.txt اضافه کنید
env > mysite > main > urls.py
from django.urls import path from . import views from django.contrib.sitemaps.views import sitemap from .sitemaps import ArticleSitemap from django.views.generic.base import TemplateView #import TemplateView app_name = "main" sitemaps = { 'blog':ArticleSitemap } urlpatterns = [ path("", views.homepage, name="homepage"), path('sitemap.xml', sitemap, {'sitemaps': sitemaps}, name='django.contrib.sitemaps.views.sitemap'), path("robots.txt",TemplateView.as_view(template_name="main/robots.txt", content_type="text/plain")), #add the robots.txt file ]
هنگامی که مشخص کردید چه چیزی باید به robots.txt اضافه شود، فایل را ذخیره کنید و سپس به urls.py برنامه خود بروید .
در urls.py ، TemplateView
در بالای فایل وارد کنید، سپس robots.txt
مسیر را اضافه کنید و یک نمای جدید ایجاد کنید. ما این کار را برای نوشتن محدود خطوط کد اضافی برای چنین نمای ساده ای انجام داده ایم.
حتما مسیر صحیح قالب را مشخص کنید. اگر فایل robots.txt خود را در قالبها > دایرکتوری اصلی ایجاد کردهاید، باید به main/robots.txt
عنوان فایل اضافه کنید template_name
.
توجه داشته باشید که الگوی URL نقشه سایت نیز به URL ها اضافه می شود.
مشاهده robots.txt
در این مرحله، اکنون می توانید سرور خود را اجرا کنید و فایل robots.txt را در مرورگر خود در http://127.0.0.1:8000/robots.txt مشاهده کنید . مانند یک فایل متنی ساده با عامل کاربر، آدرسهای اینترنتی غیرمجاز و نقشه سایت فهرست شده به نظر میرسد.
2 تست برای robots.txt ایجاد کنید
env > mysite > main > tests.py
from django.test import TestCase from http import HTTPStatus # Create your tests here. class RobotsTest(TestCase): def test_get(self): response = self.client.get("/robots.txt") self.assertEqual(response.status_code, HTTPStatus.OK) self.assertEqual(response["content-type"], "text/plain") lines = response.content.decode().splitlines() self.assertEqual(lines[0], "User-Agent: *") def test_post(self): response = self.client.post("/robots.txt") self.assertEqual(response.status_code, HTTPStatus.METHOD_NOT_ALLOWED)
زمان آزمایش robots.txt است. این کد بر اساس کد ارائه شده در adamj.eu است.
اجرای این تست ها قبل از استقرار برای اطمینان از اینکه فایل به درستی نوشته شده است مهم است.
این test_get()
تابع بررسی میکند که آیا کاربر robots.txt در یک درخواست GET ظاهر میشود، بررسی میکند که آیا متن ساده است یا خیر، و مطمئن میشود که عامل کاربر خط اول فایل است.
تابع دوم text_post()
، بررسی می کند که آیا درخواست POST است یا خیر و بیان می کند که روش مجاز نیست.
تست ها را از خط فرمان اجرا کنید
CLI – تست های گذرانده شده است
(env) C:\Users\Owner\desktop\code\env\mysite> py manage.py test ---------------------------------------------------------------------- Ran 2 tests in 0.033s OK Destroying test database for alias 'default'...
دستور py manage.py test
اجرای دو تست را در فایل tests.py خود اجرا کنید. خط فرمان شما تعداد تستهایی را OK
که در صورت قبولی هر دو انجام شده است، نشان میدهد.
CLI – تست ناموفق
(env) C:\Users\Owner\desktop\code\env\mysite> py manage.py test . ====================================================================== FAIL: test_get (main.tests.RobotsTxtTests) ---------------------------------------------------------------------- Traceback (most recent call last): File "C:\Users\Owner\Desktop\code\env\mysite\main\tests.py", line 13, in test_get self.assertEqual(lines[0], "User-Agent: *") AssertionError: 'User-Agent: d' != 'User-Agent: *' - User-Agent: d ? ^ + User-Agent: * ? ^ ---------------------------------------------------------------------- Ran 2 tests in 0.029s FAILED (failures=1) Destroying test database for alias 'default'...
اگر تست شما ناموفق باشد، یک ردیابی جنگو با خطای ادعا دریافت خواهید کرد.
آزمایش ناموفق بود زیرا ما ادعا کردیم که خط اول فایل robots.txt باید باشد "User-Agent: *"
.
در این مورد، robots.txt دارای یک است User-Agent: d
که برابر نیست User-Agent: *
.
از روی خط می توانید ببینید FAILED (failures=1)
که آزمون دیگر قبول شده است.
خطا را برطرف کنید و دوباره تست را اجرا کنید.