2010-06-05 6 views
1

URL 재 작성없이 사이트에서 작업하기 시작했습니다. 자, Intelligencia.UrlRewriter를 사용하기 시작 했으므로 요청은 친숙한 URL을 사용하는 것입니다.URL 재 작성 - 경로 작성

public static string getCategoriesIndexLink(string category) 
{ 
    string baseUrl = getBaseUrl() + (String)HttpContext.GetGlobalResourceObject("Paths", "categorii.index"); 
    return baseUrl.AddQueryParam(CQueryStringParameters.CATEGORY, category); 
} 

"~/Site/Categorii.aspx?category=$1" 

지금 내가 Web.config의에서 다음과 같은 규칙을 추가 한 URL을 이런 종류의 구축 : 나는 방법이

:

의 예로 들어 보자 :

<rewrite url="~/Site/Categorii/(.+)" to="~/Site/Categorii.aspx?category=$1" /> 

질문은 위와 같은 방법으로 좋은 URL을 만들 수있는 방법입니까? 그래서 더 이상 구조를 수정할 필요에 beeing없이

"~/Site/Categorii.aspx?category=m1" 

하지만

"~/Site/Categorii/m1" 

을 반환하지?

내 말은, 위의 것과 같은 약 30 가지 방법이 있습니다. 내가 URL 구조를 수정하는 방법에 ISO의 출력에서 ​​정규식을 사용하도록 유도 할 수있는 경우는 사전에

감사합니다 ...

답변

0

당신은 그

같은 것을 사용할 수 있습니다 ... 매우 도움이 될 것입니다
Match mExprStatic = Regex.Match([email protected]"/Site/Categorii/m1", [email protected]"/site/categorii/(?<category>\S*)", RegexOptions.IgnoreCase | RegexOptions.Singleline); 
if (mExprStatic.Success || !string.IsNullOrEmpty(mExprStatic.Value)) 
{ 
    string parameters = "?" + mExprStatic.Groups["category"].Value; 
    if ((context.Request.QueryString.AllKeys != null) && (context.Request.QueryString.AllKeys.Length > 0)) 
    { 
     foreach (string key in Request.QueryString.AllKeys) 
       parameters += "&" + key + "=" + Request[key]; 
    } 
    Server.Transfer("~/Site/Categorii.aspx" + parameters , false);