2016-08-07 3 views
3

asp.net mvc 응용 프로그램을 개발 중입니다. 내 현재 사이트가 많은 로봇 요청을 받고 있기 때문에 로봇 응용 프로그램에서 로봇을 방지하기 위해 robots.txt를 만듭니다. 그래서이 링크 Robots.txt file in MVC.NET 4을 발견하여 robots.txt를 만들었습니다. 하지만이 URL (www.domain.com/robots.txt)을 입력하는 것과 같은 애플리케이션에 액세스하면 항상 404 페이지가 반환됩니다. 아래 내 코드를 참조하십시오. asp.net mvc에서 robots.txt의 경로를 매핑 할 수 없습니다

이 내 로봇이
@{ 
    Layout = null; 
} 

User-agent:* 
Disallow:/ 

내가 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 
} 

그러나이 같은 robots.txt에 대한 경로를 구성이다

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

HomeController 내 행동 방법 나는이 URL "www.domain.com/robots.txt"에 접속하여 항상 404 페이지를 반환합니다. 내 애플리케이션에 robots.txt를 올바르게 추가하려면 어떻게해야합니까?

+0

경로의 파일 확장자 '.txt'가 문제의 원인입니다. – Nkosi

+0

하지만이 "로봇"과 같이 매핑하면 로봇을 필터링하지 않습니다. 로봇은 항상 /robots.txt를 찾습니다. 그렇지? .txt를 제외하면 여전히 로봇을 필터링합니까? –

+0

아니요. robot.txt가 이것을 살펴보고 도움이되는지 확인하도록 구성해야합니다. http://stackoverflow.com/a/36151756/5233410 – Nkosi

답변

3

파일 확장명으로 끝나는 경로 만들기는 ASP.NET MVC에서 기본적으로 허용되지 않습니다. 당신이 작업이 .txt 경로를 허용하도록 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 파일에 다음을 추가 할 필요가 . 나는 내가 연구하고 있던 프로젝트에서 같은 문제를 겪었고 작동하도록했다.

그러나 모델을 사용하지 않고 로봇 출력에 대한보기를 사용하면 정적 robots.txt를 유지하는 것이 유리합니다. 또 다른 방법은 문자열 작성기를 사용하여 액션에서 직접 텍스트를 출력하는 것입니다.