Как я могу динамически генерировать robots.txt правильно?

#asp.net-core #.net-core

Вопрос:

У меня есть несколько сайтов, на всех из них есть одно и то же robots.txt.

Когда я изменяю один, я должен изменять другие. Это так беспокоит некоторых.

У меня есть идея, которая породила robots.txt по внутреннему коду. Серверная часть получит данные с удаленного сервера с помощью веб-API и сгенерирует их.

Вот код из учебника по StackOverflow:

 public class OthersController: Controller
    {
    [Route("/robots.txt")]                
    public ContentResult RotbotsTXT()
    {
        String Result=///some code get robots data from remote server.
        return this.Content(Result, "text/plain", Encoding.UTF8);
    }
}
 

Несмотря на это, он хорошо работает в браузере.

Однако я столкнулся со странной ситуацией.

Некоторые пауки получают правильный доступ к маршруту, но не могут его обнаружить(например, паук Байду).

А также, некоторые пауки(например, бот Google) будут странным образом получать доступ к маршруту www.abc.com//robots.txt (в robots.txt никогда не храните здесь), но не www.abc.com/robots.txt.

После возврата к старому способу создания TXT-файла все проблемы будут устранены.

Что не так с моим кодом? Как я могу это решить? Спасибо.

Ответ №1:

Измените [Route("/robots.txt")] на [Route("robots.txt")] вот так:

 public class OthersController: Controller
    {
    [Route("robots.txt")]                
    public ContentResult RobotsTXT()
    {
        String Result=///some code get robots data from remote server.
        return this.Content(Result, "text/plain", Encoding.UTF8);
    }
}
 

Комментарии:

1. Эммм… похоже, это может решить проблему доступа ботов Google. Однако некоторые пауки, похоже, все еще не могут его обнаружить(я тестирую его с помощью this:stool.chinaz.com/robots ).

2. Работает ли это, когда вы пытаетесь перейти к нему в своем браузере?

3. Независимо от того, изменю ли я маршрут, он хорошо работает в браузере.

4. Я проверяю маршрут с помощью www.abc.com/robots.txt.

5. Проверьте свои собственные robots.txt, а не ABC news’ robots.txt.