다음을 통해 공유


ASP.NET 웹 페이지(Razor) 사이트에서 읽기 가능한 URL 만들기

Tom FitzMacken

이 문서에서는 Razor(ASP.NET 웹 페이지) 웹 사이트의 라우팅과 SEO에 더 읽기 좋으며 더 나은 URL을 사용할 수 있는 방법을 설명합니다.

학습할 내용:

  • ASP.NET 라우팅을 사용하여 더 읽기 가능하고 검색 가능한 URL을 사용하는 방법입니다.

자습서에서 사용되는 소프트웨어 버전

  • ASP.NET 웹 페이지(Razor) 3

이 자습서는 ASP.NET 웹 페이지 2에서도 작동합니다.

라우팅 정보

사이트의 페이지에 대한 URL은 사이트의 작동 방식에 영향을 미칠 수 있습니다. "친숙한" URL을 사용하면 사용자가 사이트를 더 쉽게 사용할 수 있습니다. 또한 사이트에 대한 SEO(검색 엔진 최적화)에 도움이 될 수 있습니다. ASP.NET 웹 사이트에는 친숙한 URL을 자동으로 사용하는 기능이 포함됩니다.

ASP.NET 서버의 파일을 가리키는 대신 사용자 작업을 설명하는 의미 있는 URL을 만들 수 있습니다. 가상의 블로그에 대해 다음 URL을 고려합니다.

  • http://www.contoso.com/Blog/blog.cshtml?categories=hardware
  • http://www.contoso.com//Blog/blog.cshtml?startdate=2009-11-01&enddate=2009-11-30

이러한 URL을 다음 URL과 비교합니다.

  • http://www.contoso.com/Blog/categories/hardware/
  • http://www.contoso.com/Blog/2009/November

첫 번째 쌍에서 사용자는 blog.cshtml 페이지를 사용하여 블로그가 표시되는 것을 알고 있어야 하며 올바른 범주 또는 날짜 범위를 가져오는 쿼리 문자열을 생성해야 합니다. 두 번째 예제 집합은 훨씬 쉽게 이해하고 만들 수 있습니다.

첫 번째 예제의 URL은 특정 파일(blog.cshtml)을 직접 가리킵니다. 어떤 이유로 블로그가 서버의 다른 폴더로 이동되었거나 다른 페이지를 사용하도록 블로그를 다시 작성한 경우 링크가 잘못되었습니다. 두 번째 URL 집합은 특정 페이지를 가리키지 않으므로 블로그 구현 또는 위치가 변경되더라도 URL은 여전히 유효합니다.

ASP.NET 웹 페이지 ASP.NET 라우팅을 사용하므로 위의 예제와 같이 친숙한 URL을 만들 수 있습니다. 라우팅은 URL에서 요청을 처리할 수 있는 페이지(또는 페이지)로 논리적 매핑을 만듭니다. 매핑은 논리적이기 때문에(물리적이 아니라 특정 파일에 대한) 라우팅은 사이트의 URL을 정의하는 방법에 큰 유연성을 제공합니다.

라우팅 작동 방식

ASP.NET 요청을 처리할 때 URL을 읽어 라우팅 방법을 결정합니다. ASP.NET URL의 개별 세그먼트를 왼쪽에서 오른쪽으로 가는 디스크의 파일과 일치시키려고 시도합니다. 일치하는 항목이 있으면 URL에 남아 있는 모든 항목이 경로 정보로 페이지에 전달됩니다.

누군가가 이 URL을 사용하여 요청한다고 상상해 보세요.

http://www.contoso.com/a/b/c

검색은 다음과 같습니다.

  1. 경로와 이름이 /a/b/c.cshtml인 파일이 있나요? 그렇다면 해당 페이지를 실행하고 정보를 전달하지 않습니다. 기타...
  2. 경로와 이름이 /a/b.cshtml인 파일이 있나요? 그렇다면 해당 페이지를 실행하고 값을 c 전달합니다. 그렇지 않으면...
  3. 경로와 이름이 /a.cshtml인 파일이 있나요? 그렇다면 해당 페이지를 실행하고 값을 b/c 전달합니다.

검색에서 지정된 폴더에서 .cshtml 파일에 대한 정확한 일치 항목을 찾지 못하면 ASP.NET 계속해서 다음 파일을 찾습니다.

  1. /a/b/c/default.cshtml (경로 정보 없음).
  2. /a/b/c/index.cshtml (경로 정보 없음).

참고

명확히 하기 위해 특정 페이지(즉, .cshtml 파일 이름 확장자를 포함하는 요청)에 대한 요청은 예상대로 작동합니다. 와 같은 http://www.contoso.com/a/b.cshtml 요청은 b.cshtml 페이지를 잘 실행합니다.

페이지 내에서 사전인 페이지의 UrlData 속성을 통해 경로 정보를 가져올 수 있습니다. ViewCustomers.cshtml이라는 파일이 있고 사이트에서 다음 요청을 받는다고 상상해 보세요.

http://mysite.com/myWebSite/ViewCustomers/1000

위의 규칙에 설명된 대로 요청은 페이지로 이동합니다. 페이지 내에서 다음과 같은 코드를 사용하여 경로 정보를 가져와 표시할 수 있습니다(이 경우 값 "1000").

<!DOCTYPE html>
<html>
    <head>
        <title>URLData</title>
    </head>
    <body>
      Customer ID: @UrlData[0].ToString()
    </body>
</html>

참고

라우팅에는 전체 파일 이름이 포함되지 않으므로 이름이 같지만 파일 이름 확장명이 다른 페이지(예: MyPage.cshtmlMyPage.html)가 있는 경우 모호성이 있을 수 있습니다. 라우팅 문제를 방지하기 위해 사이트에 이름이 확장에서만 다른 페이지가 없는지 확인하는 것이 가장 좋습니다.

추가 리소스

WebMatrix - URL, URLData 및 SEO에 대한 라우팅입니다. Mike Brind의 이 블로그 항목에서는 라우팅이 ASP.NET 웹 페이지 작동하는 방식에 대한 몇 가지 추가 세부 정보를 제공합니다.