#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.