ASP.NET 伪静态 Url重写真正的高手请进,百度了N遍无果
用个实例:ASP.NET项目里页面上的跳转地址是.aspx后缀的。想使用伪静态技术实现静态显示,即显示的后缀是.html。
我在IE输入 如~/aaa_1.html 访问到了~/aaa.aspx?ID=1 这个动态页面;IE地址栏显示的还是~/aaa_1.html(处理回发);
但我的~/aaa.aspx 里面有个button按钮,用于跳转到~/bbb.aspx这个页面,后台的代码是Response.Redirect("bbb.aspx");
我点击这个按钮时可以跳转过去,但IE地址栏里显示的地址是~/bbb.aspx;
(问题就在这里)我想跳转到~/bbb.aspx这个页面上时IE的地址栏显示~/bbb.html 这个地址。请问有什么方法可以解决吗?我查找了很多关于伪静态和Url地址重写的例子,都没有说到这一点。
有一种解决办法是吧所有的Response.Redirect都写成.html后缀,但我的项目有N多这样的跳转,改起来相当麻烦。有其他简单的方式吗(不知道IIS配置伪静态可否实现,没怎么研究)?最好不要修改原来的代码。
大家都一起来学习学习····· ASP.NET URL重写 伪静态 URLRewriter.dll IIS
[解决办法]
http://www.iis.net/downloads/microsoft/url-rewrite
http://www.iis.net/downloads/microsoft/url-rewrite
[解决办法]
urlrewriter.
IIS设置。ISAPI筛选器,添加IsapiRewrite4.dll。在IsapiRewrite4.dll目录中创建一个ini文件。里面写规则。如:RewriteRule ^/index.html /default.aspx
这样,访问index.html时,就相当于访问default.aspx.
具体的,去百度。
[解决办法]
更正
你可以去试试这个扩展,如果你的IIS和操作系统支持的话。
安装完了以后在IIS里进到这个设置项里,添加一个规则 *.html->*.aspx,然后使用rewrite模式,这样url是被重写的,就是你输入地址index.html,请求会转到index.aspx,浏览器上面也会显示为index.html。然后你程序里面都不用改的。你试一下就知道了.
[解决办法]
在服务器端按路由规则生成你所谓的貌似静态的url地址
[解决办法]
同意。
第一,不要去自欺欺人地去搞什么“伪htm后缀”。你可以搞成 .fox .ccav .me .fck.cjk 之类的后缀的形式都可以,甚至没有后缀的形式也可以,为什么要做个“伪娘”去混淆人家 .htm .html 后缀呢?
而技术上,这个部分不要拿6、7年前的入门书上那些东西学了。现在asp.net4以上版本已经支持路由。参见
http://msdn.microsoft.com/zh-cn/library/dd329551(v=vs.100).aspx
如果折腾这类东西,我们先要问那些瞎耽误工夫的人:你知道asp.net自身就支持路由功能吗?
[解决办法]
你要先搞清楚Response.Redirect(url)是告诉浏览器你直接去访问URL地址,那么你这个URL给的是什么浏览器就会去访问什么。所以说原则上来说你必须要把所有的跳转都改一遍。
不过办法都是人想出来的,可以做一个扩展方法,
public static void UrlRedirect(this HttpResponse response, string url)
{
//这个地方处理一下把aspx换成html地址,规则什么的自己想办法搞定
response.Redirect(url);
}
然后页面上的Response.Redirect替换成Response.UrlRedirect