Net URL 重写技术
我用的是 VS 2005 的开发工具想使用微软的重写组件(download.microsoft.com/download/0/4/6/0463611e-a3f9-490d-a08c-877a83b797cf/MSDNURLRewriting.msi)
我在Web.Config中是这样设置的
<?xml version="1.0"?>
<configuration>
<!--这里要加入一个configSections节-->
<configSections>
<section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />
</configSections>
<!--这里要加入一个RewriterConfig用来配置规则-->
<RewriterConfig>
<Rules>
<RewriterRule>
<!--匹配guid参数-->
<LookFor> ~/([A-Za-z0-9]{8}-[A-Za-z0-9]{4}-[A-Za-z0-9]{4}-[A-Za-z0-9]{4}-[A-Za-z0-9]{12})\/Class.aspx </LookFor>
<SendTo> ~/Class/Default.aspx?id=$1 </SendTo>
<!--即访问类似于~/9e808623-f0f9-49c4-86f2-9891015d405b/Class.aspx的页面将发往~/Class/Default.aspx?id=9e808623-f0f9-49c4-86f2-9891015d405b-->
<LookFor>~/Default.html</LookFor>
<SendTo>~/Default.aspx</SendTo>
</RewriterRule>
</Rules>
</RewriterConfig>
<appSettings/>
<connectionStrings/>
<system.web>
<httpHandlers>
<!--这里加入urlRewriter.dll要处理的后缀文件-->
<add verb="*" path="*.aspx" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
<add verb="*" path="*.html" type="URLRewriter.RewriterFactoryHandler, URLRewriter"/>
</httpHandlers>
<compilation debug="true"/>
<authentication mode="Windows"/>
</system.web>
</configuration>
而连接是这样的
<a href="Default.html">aaaaaaaaaaa</a>
想连接到
Default.aspx 这个页面
但是总是说无法找到该页不知道那里还需要修改.请大家指点一下
------解决方案--------------------ASP.net中实现UrlRewrite最快捷的方法(2.0测试通过):
在你的站点的Global.asax文件中添加以下代码:
void Application_BeginRequest(object sender, EventArgs e) {
string oldUrl = HttpContext.Current.Request.RawUrl;
string newUrl = oldUrl;
string[] pattern = ConfigurationManager.AppSettings["UrlPattern"].Split('@');
string[] replace = ConfigurationManager.AppSettings["UrlReplace"].Split('@');
for (int iii = 0; iii < pattern.Length; iii++)
{
if (Regex.IsMatch(oldUrl, pattern[iii], RegexOptions.IgnoreCase | RegexOptions.Compiled))
{
newUrl = Regex.Replace(oldUrl, pattern[iii], replace[iii], RegexOptions.Compiled | RegexOptions.IgnoreCase);
oldUrl = newUrl;
}
}
this.Context.RewritePath(newUrl);
}
然后修改你的web.config:
添加以下两个appSettings:
<add key="UrlPattern" value="(.+)default-(\d+)-(\d+)\.html"/>
<add key="UrlReplace" value="$1default.aspx?typeid=$2&page=$3"/>
前一个是请求的URL,后一个表示替换后真实的URL,多个正则表达式间用@分隔
上面的表达式表示将形如:
http://www.qq.net/default-1-1.html
的请求转换为:
http://www.qq.net/default.aspx?typeid=1&page=1
更多的扩展可通过添加不同的正则表达式来完成,正则替换是从前往后的,注意不要冲突
------解决方案--------------------web.config里面少了句:
C# code
<httpModules>
<add type="URLRewriter.ModuleRewriter, URLRewriter" name="ModuleRewriter" />
</httpModules>