url重写 - 构建路径

时间:2010-06-05 07:44:24

标签: c# asp.net url-rewriting

我已经开始在没有网址重写的网站上工作了。现在,请求是使用友好的URL,所以我开始使用Intelligencia.UrlRewriter。

我们举一个例子:

我有一个方法:

 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中添加了以下规则:

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

问题是我如何制作上述方法来构建那种漂亮的网址? 所以不再返回

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

但是

"~/Site/Categorii/m1"

不需要修改其结构?

我的意思是,我有大约30种方法,如上面的方法;如果我可以被引导在方法的输出中使用正则表达式修改url结构,那将是非常有帮助的...

提前致谢...

1 个答案:

答案 0 :(得分:0)

你可以使用类似的东西

Match mExprStatic = Regex.Match(BaseURL+@"/Site/Categorii/m1", BaseUrl+@"/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);