您好,请帮我解决这个问题
我有以下网址 - > www.sample.com/news.aspx?id=45
我希望将查询字符串中的“id”传递给news.aspx并显示此消息,但由于url重写,url会更改为此 - > www.sample.com/news/my-news-45 /
如何从查询字符串中提取“id”?
Thanx求助
答案 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