[ Полезный рекламный блок ]
Попробуйте свои силы в игре, где ваши навыки программирования на 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#?
Пройдите наш тест на 13 вопросов, чтобы узнать, как много вы знаете на самом деле!
C# Braincheck |
Вы хотите научится писать код на языке программирования C#?
Создавать различные информационные системы, состоящие из сайтов, мобильных клиентов, десктопных приложений, телеграмм-ботов и т.д.
Переходите к нам на страницу Dijix и ознакомьтесь с условиями обучения, мы специализируемся только на индивидуальных занятиях, как для начинающих, так и для более продвинутых программистов. Вы можете взять как одно занятие для проработки интересующего Вас вопроса, так и несколько, для более плотной работы. Благодаря личному кабинету, каждый студент повысит качество своего обучения, в вашем распоряжении:
- Доступ к пройденному материалу
- Тематические статьи
- Библиотека книг
- Онлайн тестирование
- Общение в закрытых группах
Живи в своем мире, программируй в нашем.