QueryStrings的动态URL REWRITING

时间:2011-06-21 08:14:19

标签: asp.net url url-rewriting url-routing url-mapping

您好,请帮我解决这个问题

我有以下网址 - > www.sample.com/news.aspx?id=45

我希望将查询字符串中的“id”传递给news.aspx并显示此消息,但由于url重写,url会更改为此 - > www.sample.com/news/my-news-45 /

如何从查询字符串中提取“id”?

Thanx求助

1 个答案:

答案 0 :(得分:2)

您可以手动完成URL重写,但手动编写代码的缺点可能是单调乏味且容易出错。我建议您使用网络上已有的HttpModule免费为您执行此项工作,而不是自己动手。

这里有一些免费的,你今天可以下载和使用:

http://urlrewriter.net/ http://www.urlrewriting.net/149/en/home.html

<?xml version="1.0"?>

<configuration>

  <configSections>
    <section name="rewriter"  
             requirePermission="false" 
             type="Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler, Intelligencia.UrlRewriter" />
  </configSections>

  <system.web>

    <httpModules>
      <add name="UrlRewriter" type="Intelligencia.UrlRewriter.RewriterHttpModule, Intelligencia.UrlRewriter"/>
    </httpModules>

  </system.web>

  <rewriter>
    <rewrite url="~/products/books.aspx" to="~/products.aspx?category=books" />
    <rewrite url="~/products/CDs.aspx" to="~/products.aspx?category=CDs" />
    <rewrite url="~/products/DVDs.aspx" to="~/products.aspx?category=DVDs" />
  </rewriter>  

</configuration>  

上面的HttpModule URL重写器还添加了对正则表达式和URL模式匹配的支持(以避免您必须对web.config文件中的每个URL进行硬编码)。因此,您可以重写以下规则,而不是对类别列表进行硬编码,以便从URL中动态提取任何“/products/[category].aspx”组合的类别:

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

可以在此linke上找到完整的参考文献

http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx