021-71053903 [email protected] پشتیبانی از شنبه تا چهارشنبه ساعت 9 الی 16

چگونه Robots.txt به جنگو اضافه کنیم ؟

چگونه 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)که آزمون دیگر قبول شده است.

خطا را برطرف کنید و دوباره تست را اجرا کنید.

محمدرضا حسنی

224 مطلب منتشر شده

دانش آموخته رشته فناوری اطلاعات / موسس پایتونی ها

درباره این مطلب نظر دهید !

مطالب پرمخاطب پایتونی ها

محصولات فروش پایتونی ها

%60
تخفیف

آموزش فیگما (Figma)

30,000 تومان
2