各位乡亲父老,欢迎大家来捧场!江湖卖艺,生活不易!技艺交流(投稿、打广告、链接交换),请搓这里

  ASPX转化为html(伪静态)

2019/11/8 17:51:37管理员 2114
- N +
1 ?什么是伪静态?
现在很多门户网站或者各大电商平台的网站的链接最后都是.htm或者.htm结尾,那么他们的网页真的是静态的html吗?拿京东来说,有无数个页面都都Html,在商品每时每刻都可能被更新的情况下,那是不是要有专门的人员来修改html静态页面呢,可想而知当然不是,不管是javaweb还是asp.net的动态页面绝对不是以.html结尾的。
2 为什么要实现伪静态?
那么我们为什么要注重url的结尾呢,那就是SEO(Search Engine Optimization)--搜索引擎优化,虽然现在主流的搜索引擎都开始支持动态的url,可是我们的网站为了排名尽量靠前,我们还是要尽量符合搜索引擎的规则。

3    如何实现伪静态?
.net3.5可以直接配置Global.asax配置路由即可
protected void Application_Start(object sender, EventArgs e)
                {
                        routes.MapPageRoute("HtmlList", "list/{id}.html", "~/content.aspx");
                        routes.MapPageRoute("HtmlContent", "{id}.html","~/content.aspx");
                }
可是不是这么简单,浏览器意外的报了 http 404错误

最后分析得知,可能是ASP.NET认为html文件是静态文件,没有必要进入我们的路由系统,直接指向了物理路径,所以报了一个404错误,那么我们怎么来解决这个问题呢?
一开始我尝试让所有的后缀名都进入asp.net的管道,好我们在webconfig的?system.webServer配置节下的modules节点添加runAllManagedModulesForAllRequests="true",
就是让所有的请求都经过httpModules,大功告成

到这里是不是真的结束了,有没有同学想到,本来物理文件是不应该经过asp.net管道的,如果所有的图片和CSS,JS文件都经过ASP.NET管道,那我们的引用程序的性能会受到很大的影响,最后我想到我们只让后缀名是.html的文件进入管道,如果有其他真实存着的.html结尾的物理文件存着,我们可以让路由忽略他
system.webServer配置节下
                            这样,我们的应用程序就可以实现伪静态了,我们总是要比别人想的多一点,用最好的方法完成同样的功能.


.net3.5以前实现方法如下:
运行PHP,ASP.NET,JSP,ColdFusion的网页服务器(如IIS,Apache),大多可以用 URL Rewriting来实现隐藏或改变拓展名。大网站,像腾讯,百度(用PHP),都在用URL Rewriting的方法来把拓展名隐藏或改变。好处有几点:
1. 搜索引擎比较喜欢.html,.htm的(与.jsp,.php,.aspx,.cff相比),因为.html, .htm是静态的,更容易让引擎了解你网页的内容。而动态网页的内容是根据用户,来输出不同的内容,不容易让引擎吸收具体HTML内容。

2. 如果不用URL Rewriting将拓展名隐藏或改成.html,那么假如这个网站要换个技术或把动态页面换成静态,则需要寻找所有含有拓展名的连接,把连接所含URL进行拓展名修改(如从JSP换到PHP技术,则要寻找所有含有.jsp的页面,并把所有含.jsp的URL改成.php,费时费力)。URL Rewriting正好避免了这点,因为好的URL是能做到“不变应完变”的。

3. 防止某些黑客恶意攻击。有些大网站采用不同的技术开发不同功能的页面。而把拓展名改掉,让黑客无法确认此页面用的技术是什么,从而就无从下手。

4. 方便访问者使用。访问者不是程序员,他们不明白什么是.jsp,.php.aspx,他们只知道URL。所以统一把拓展名拿掉,或者同意把拓展名换为html,htm,有利于用户的使用。用户可以知道现在在你网站的位置,如何通过输入URL到某一页面。

实例:
Intelligencia.UrlRewriter.dll aspx重写为html实例
    
1、http://urlrewriter.net/      下载解压缩后把Intelligencia.UrlRewriter.dll 文件添加引用到web工程里。

2.web.config配置:

            
                                            其中: 若果code= abc的话,最终显示的结果为"虚拟目录名称/test_abc.html" 。如果吧.html替换成 .aspx那就是"虚拟目录名称/test_abc.aspx"

3.IIS配置:

如果是用"虚拟目录名称/test_abc.aspx" 的话,不需要配置IIS. 使用了"虚拟目录名称/test_abc.html" 配置IIS的方法如下:
http://urlrewriter.net/index.php/support/installation/windows-server-2003/ 里面的图9不准确,准确的为:
还有第八步中的”untick Verify that file exists.“要看仔细。否则重写HTML就无效。

4:备注

不要在"应用程序扩展"里“添加" .html的映射,否则正常的html将无法访问。
5.在vs2005中,传多个参数应该加&在vs2003中,只用分号就好了
eg.
                                                    ~NewsClsManage-(\d*)-(\d*).html                ~NewsClsManage.aspx?ClassID=$1&flag=$2                    
0人赞 分享 二维码 赏一个
选择分享方式
移步手机端
文章手机二维码

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章
选择打赏方式
微信赞助

打赏