2016-08-07 4 views
3

Я разрабатываю приложение asp.net mvc. Я создаю файл robots.txt для моего приложения для предотвращения ботов, потому что мой текущий сайт получает много запросов роботов. Поэтому я нашел эту ссылку, Robots.txt file in MVC.NET 4, чтобы создать файл robots.txt. Но когда я получаю доступ к моему приложению, например, входящему URL-адресу, «www.domain.com/robots.txt», он всегда возвращает 404 страницы. См. Мой код ниже.Невозможно наметить маршрут для robots.txt в asp.net mvc

Это мой метод действия в HomeController

public ActionResult Robots() 
{ 
    Response.ContentType = "text/plain"; 
    return View(); 
} 

Это мои роботы смотреть

@{ 
    Layout = null; 
} 

User-agent:* 
Disallow:/ 

Я настроил маршрут robots.txt, как это в RouteConfig

public static void RegisterRoutes(RouteCollection routes) 
{ 
      routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

      //routes.MapMvcAttributeRoutes(); 
      routes.MapRoute(
       "Robots.txt", 
       "robots.txt", 
       new { controller = "Home", action = "Robots" }, 
       new string[] { "AyarDirectory.Web.Controllers" } 
       ); 

      //other routes 
} 

Но когда Я обращаюсь к этому URL-адресу «www.domain.com/robots.txt», он всегда возвращает 404 страницы. Как я могу правильно добавить robots.txt в мое приложение?

+0

Расширение файла '.txt' в маршруте является причиной вашей проблемы. – Nkosi

+0

Но если я нахожусь в виде «роботов», он не будет фильтровать роботов. Роботы всегда ищут /robots.txt. Это? Если я исключу .txt, он все равно будет фильтровать роботов, пожалуйста? –

+0

no it wont. вам нужно настроить, чтобы позволить robot.txt взглянуть на это и посмотреть, помогает ли он http://stackoverflow.com/a/36151756/5233410 – Nkosi

ответ

3

Создание маршрута, заканчивающегося расширением файла, по умолчанию не разрешено в ASP.NET MVC. Чтобы обойти это ограничение безопасности, вам необходимо добавить следующие строки в файл Web.config:

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <!-- ...Omitted --> 
    <system.webServer> 
    <!-- ...Omitted --> 
    <handlers> 
     <!-- ...Omitted --> 
     <add name="RobotsText" 
      path="robots.txt" 
      verb="GET" 
      type="System.Web.Handlers.TransferRequestHandler" 
      preCondition="integratedMode,runtimeVersionv4.0" /> 
    </handlers> 
    </system.webServer> 
</configuration> 
0

сказал бы то же самое, что и выше вам нужно изменить web.config, чтобы маршрут с .txt на работу , У меня была такая же проблема с проектом, над которым я работал, и я получил его для работы.

Однако, если вы используете представление для вывода роботов без модели, вы можете сохранить статический файл robots.txt, поскольку он не даст вам никаких преимуществ. Другой способ - вывести текст непосредственно из действия с помощью построителя строк.

 Смежные вопросы

  • Нет связанных вопросов^_^