2011-11-05 2 views
0

URL을 소문자로하고 끝에 슬래시를 추가하고 싶습니다. 예 :ASP.NET MVC 3 및 ​​URL 다시 쓰기

mydomain.com/About -> mydomain.com/about/ 
mydomain.com/about -> mydomain.com/about 

Google 애널리틱스는 이러한 모든 URL을 전혀 다른 것으로 간주하기 때문입니다.
나는 Web.config의 내부에 다음 다시 쓰기 규칙이 :

<rewrite> 
    <rules> 
     <rule name="Redirect mydomain.com to www" patternSyntax="Wildcard" stopProcessing="true"> 
      <match url="*" /> 
      <conditions> 
       <add input="{HTTP_HOST}" pattern="mydomain.com" /> 
      </conditions> 
      <action type="Redirect" url="http://www.mydomain.com/{R:0}" /> 
     </rule> 
    </rules> 
</rewrite> 

어떤 도움도 대단히 감사하겠습니다!

+0

문법을 기억하지 못합니다. 그러나 MVC3에서 Url.Action 또는 Url.Route 메서드를 사용하면 URL의 대/소문자를 만들지 않습니다. 물건을 돌보는 동안 모든 링크를 클릭하면 리디렉션이 발생하므로 좋지 않습니다. 내가 과거에 이것을 해결 한 방법은 실제로 내 모든 경로 url을 친숙하게 만드는 맞춤 경로 구현을 작성하고 그렇지 않은 경우 301 수 있습니다. –

+0

이러한 리디렉션은 404로 진행되는 경우 오탐 (false positive)을 초래하게됩니다. 응답이 첫 번째 요청에서는 301, 두 번째 요청에서는 404가되어 서버에 불필요한 요청을 유발합니다. –

답변

0

다음 블로그 게시물 Force MVC Route URL to Lowercase의 코드를 사용하여 강제로 소문자 라우팅을 할 수 있습니다.

슬래시가 필요한 경우 두 번째 클래스 (예 : LowerCaseRouteWithTrailingSlash)를 추가하여 코드를 수정하고 후행 슬래시가 있는지 확인하고 필요하면 코드를 추가 할 수 있습니다.