[ Полезный рекламный блок ]
Попробуйте свои силы в игре, где ваши навыки программирования на C# станут решающим фактором. Переходите по ссылке 🔰.
У цій статті розглянемо, як створити файл robots.txt в Asp.Net Core.
robots.txt – це файл, який зберігається в кореневому каталозі кожного сайту.
Основна мета цього файлу – обмежити доступ пошукових систем до деякого або всього вмісту вашого сайту. Просто скажіть пошуковим роботам, яку сторінку ви б хотіли, щоб вони не відвідували. robots.txt – це звичайний текстовий файл, який відповідає стандарту виключення Robots.
Розташування robots.txt дуже важливе. Це має бути головний каталог, інакше агенти користувачів/пошукові системи не зможуть його знайти.
Маршрутний шлях має бути приблизно таким:
http(s)://www.example.com/robots.txt
Пошукова система
Припустимо, робот або пошукова система хоче відвідати сайт URL приклад: http(s)://example.com/contact.html.
Перед цим він спочатку перевіряє файл http(s)://example.com/robots.txt. Якщо пошукова система знайшла файл robots.txt, то вона перевіряє, дозволено вміст для індексації чи ні.
Якщо агенти користувачів не знаходять robots.txt, вони просто припускають, що сайт не має файлу robots.txt, і тому індексують усе, що знаходять на шляху.
Створення проекту
У цьому проекті ми збираємося створити Middleware, яке перевіряє, чи є URL /robots.txt, а потім зчитує файл /robots.txt з кореня проекту. Якщо файл /robots.txt не знайдено, він показує текст за замовчуванням.
Для прикладу, створимо простий проект ASP.NET Core Web Application (Веб-додаток ASP.NET Core). Я очікую від вас мінімальні знання концепцій MVC фреймворку, тому в деяких місцях, вдаватися в подробиці не стану.
Створення класу middleware
У проєкт додамо папку Middleware, а в ній створимо клас RobotsGeneratorMiddleware, з таким вмістом:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
public class RobotsGeneratorMiddleware { private readonly RequestDelegate _requestDelegate; private readonly IWebHostEnvironment _environment; public RobotsGeneratorMiddleware(RequestDelegate requestDelegate, IWebHostEnvironment environment) { _requestDelegate = requestDelegate; _environment = environment; } public async Task Invoke(HttpContext context) { if (context.Request.Path.StartsWithSegments("/robots.txt")) { var robotsTxtPath = Path.Combine(_environment.ContentRootPath, "robots.txt"); string output = "User-agent: * nDisallow: /"; if (File.Exists(robotsTxtPath)) { output = await File.ReadAllTextAsync(robotsTxtPath); } context.Response.ContentType = "text/plain"; await context.Response.WriteAsync(output); } else { await _requestDelegate(context); } } } |
Клас middleware зобов’язаний містити конструктор, який приймає параметр типу RequestDelegate. Через цей параметр він отримує посилання на делегат запиту, який стоїть наступним у конвеєрі обробки запиту.
Також у класі має бути визначено метод, який має називатися або Invoke, або InvokeAsync. Причому цей метод має повертати об’єкт Task і приймати як параметр контекст запиту – об’єкт HttpContext. Цей метод власне і буде обробляти запит.
Суть дії класу полягає в тому, що під час потрапляння за шляхом /robots.txt, ми намагаємося знайти файл у корені проєкту, зчитуємо його вміст і повертаємо клієнту. У разі, якщо файл не буде знайдено, повертаємо встановлений у змінну output текст.
Для додавання компонента middleware, який представляє клас, у конвеєр обробки запиту застосовується метод UseMiddleware(). Додамо в клас Program.cs, наступний рядок:
1 |
app.UseMiddleware(typeof(RobotsGeneratorMiddleware)); |
За допомогою методу UseMiddleware<T>, у конструктор об’єкта VisitorCounterMiddleware буде впроваджуватися об’єкт для параметра RequestDelegate next. Тому явним чином передавати значення для цього параметра нам не потрібно.
Тестування
У будь-якому місці на комп’ютері створіть файл robots.txt з таким вмістом:
1 2 3 |
User-agent: * allow: / Sitemap: https://ms.dijix.com.ua/sitemap.xml |
У вашому випадку, вміст файлу може відрізнятися. Перенесіть цей файл в основну папку проекту:
Запустіть додаток і перейдіть за адресою: https://localhost:XXXX/robots.txt
На цьому стаття “Генерація robots.txt в Asp.Net”, підійшла до кінця, сподіваюся вам було цікаво. Поділіться вашим досвідом у коментарях, як ви генеруєте файл robots.txt для ваших проєктів, чи вважаєте його необхідним у 2023 році?
Так само вам може бути цікава попередня стаття:
Ви хочете навчитися писати код мовою програмування C#?
Створювати різні інформаційні системи, що складаються з сайтів, мобільних клієнтів, десктопних додатків, телеграм-ботів тощо.
Переходьте до нас на сторінку Dijix і ознайомтеся з умовами навчання, ми спеціалізуємося тільки на індивідуальних заняттях, як для початківців, так і для просунутих програмістів. Ви можете взяти як одне заняття для опрацювання питання, що вас цікавить, так і кілька, для більш щільної роботи. Завдяки особистому кабінету, кожен студент підвищить якість свого навчання, у вашому розпорядженні:
- Доступ до пройденого матеріалу
- Тематичні статті
- Бібліотека книг
- Онлайн тестування
- Спілкування в закритих групах