문제

다국어 웹 사이트 (ASP.NET 웹 양식 포함)를 구축 할 때는 HTTP 모듈을 사용하여 URL을 다시 작성하여 다음과 같은 (인간 및 검색 엔진 용)로 끝납니다.

uk/products/product_category_one/sub_category_one/index.aspx
uk/products/product_category_one/sub_category_one/widget_mk5.aspx
es/productos/categoría_de_producto_una/widget_mk5.aspx

MVC에 대한 나의 (초보자) 이해는 URL이 다음의 형식을 취해야한다는 것입니다.

컨트롤러 / 액션 / 식별자

따라서 MVC로 위의 기능을 복제하면 다음과 유사한 URL이됩니다.

products/category/123/product_category_one/sub_category_one
products/items/456/widget_mk5

질문..

  • '컨트롤러'세그먼트 전에 국가 코드를 URL에 삽입 할 수 있습니까?
  • 'Products'및 'ProductOs'를 동일한 컨트롤러에 매핑 할 수 있습니까?

당신의 도움을 주셔서 감사합니다

편집하다:아래의 Panos의 답변 외에도 ASP.NET 웹 사이트.

도움이 되었습니까?

해결책

URL은 당신이 좋아하는 거의 모든 형태를 취할 수 있습니다. 자세한 내용은 확인하십시오 ASP.NET MVC 프레임 워크 (2 부) : URL 라우팅. 시작하기 만하면 (최적의 솔루션인지 확실하지 않기 때문에) Global.asax에 두 개의 새로운 경로를 추가 할 수 있습니다.

        routes.MapRoute(
            "ukRoute",
            "{lang}/Products/{action}/{id}/{subcategory}",
            new { lang = "uk", controller = "Products", action = "Index", id = "", subcategory = "" }
        );
        routes.MapRoute(
            "esRoute",
            "{lang}/Productos/{action}/{id}/{subcategory}",
            new { lang = "es", controller = "Products", action = "Index", id = "", subcategory = "" }
        );

이 경로는 다음 URL을 이해합니다 (그리고 둘 다 ActionResult Category(string id, string subcategory) 의 방법 ProductsController):

uk/Products/Category/1/A
es/Productos/Category/1/A

뷰에서 이러한 URL을 만들려면 다음과 같은 것을 사용할 수 있습니다.

<%= Html.RouteLink("English 1.A", "ukRoute", new { lang = "uk", action = "Category", id = "1", subcategory = "A" })%>
<%= Html.RouteLink("Spanish 1.A", "esRoute", new { lang = "es", action = "Category", id = "1", subcategory = "A" })%>

다른 팁

이를 수행 할 수는 있지만 모든 국가가 언어가 아니라는 점을 명심하십시오. 예를 들어, EN-GB는 영국 영어, 특히 영어 콘텐츠의 대표적인 대표입니다. 가능하다면 언어 로케일에 대한 RFC1766 유래 컨벤션을 따르는 것이 좋습니다.

검색 엔진은 실제로 컨텐츠 분석을 다루는 상당히 좋은 작업을 수행하는 경향이 있으므로 다른 언어로 동일한 컨텐츠에 대해 별도의 URI를 필요로 할 필요는 없습니다. 구글 일본은 예를 들어 허용 언어 헤더로 JA-JP를 크롤링 할 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top