ASP.net实现无扩展名的URL重写。简单、方便、无需ISAPI。

转载 2007年09月24日 09:16:00

URL重写已经有很多的方法,但是多数都有一个缺点,就是不支持无扩展名的网页。比如把http://www.aaa.com/jyk 转换为 http://www.aaa.com/topic.aspx?id=jyk

微软提供的方法需要在根目录里面建立jyk的文件夹,然后再建立一个default.aspx的文件,如果您有100名会员的话,这是一个不可想象的事情。

另一个方法就是使用ISAPI过滤器,但是这个一般需要在服务器上安装一个DLL文件,自己没有服务器就不好办了。

下面提供一个可以说是我发明的一个方法——不知道以前有没有人想到过——利用两个特性来实现。

第一个:IIS里面的找不到文件的错误设置。

第二个:asp.net 里面的Server.Transfer("topic.aspx?id=jyk");

这两个结合起来就可以达到我们的目的了。

 

思路:利用404b错误捕捉客户的请求,再使用Server.Transfer转向。

 

在我们访问http://www.aaa.com/jyk 的时候,假设这时服务器上没有jyk文件夹,那么会返回什么结果呢?会返回一个“无法找到该页”的页面,那么这个返回结果能不能自己控制一下呢?很幸运IIS提供了这个功能,我们可以把这样的错误指定到网站里的一个页面。

 

操作步骤:

第一步:打开IIS管理器,网站属性——自定义错误标签——404错误——点击修改——修改“消息类型”为“URL”,在下面的文本框里填写处理这个错误得页面名称,比如/none.aspx



第二步:在我们的网站根目录下建立一个
none.aspx的网页。在里面随意写点内容(测试用)。

 

设置完毕,这时再访问http://www.aaa.com/jyk,显示的就是 none.aspx的网页内容了。注意这时浏览器里面的URL地址仍然是http://www.aaa.com/jyk,而不是http://www.aaa.com/none.aspx 。这一点很重要,如果地址变了,那就没有意义了。

那么我们怎么把页面转到我们希望的页面呢,这时所有的找不到文件的情况都会转到none.aspx文件,显然这不是我们想要的最终结果。那么我们怎么获取客户输入的网址呢?

打开none.aspx的后台文件,

  

string URL = Request.Url.Query;

 

我们可以使用上面的语句来获取URL地址,得到的地址格式是:

?404http://www.aaa.com/jyk

其中 ?404”是固定的,过滤掉它就是浏览器里面的URL地址了。

剩下的事情就是根据情况来转换网页了。可以拆串,再用switch来判断;也可以用正则表达式来判断。因为我正则不熟,我采用的是switch的方式。正则表达式请参考其他的资料,我也在找,如果您找到了请共享一下,谢谢。

优点:

1、 支持无扩展名的网页。不用建立文件夹和文件。

2、 思路简单,用法也很简单,代码也不复杂,不涉及高深的理论;

3、 支持搜索引擎,就是说可以被各大搜索引擎搜录。

4、 可以配合域名泛解析使用。

缺点:

1、 需要修改一下IIS 404b错误的处理方法;

2、 效率要略微低一点。

3、 如果您只使用.aspx的扩展名的话就可以不用修改IIS了。

4、 Asp不支持。因为aspServer.Transfer不能带参数(?id=jyk),不能传递参数的重写几乎没有什么意义。

   

这种方法已经实践过了,效果很理想。www.1380000.com www.1370000.com 这两个网站就是使用的这种方法。 

相关文章推荐

ISAPI_Rewrite实现Asp伪静态及URL重写

第一步:http://www.helicontech.com/download-isapi_rewrite.htm进入页面然后下载http://www.isapirewrite.com/downloa...

Asp.Net中不修改IIS实现URL重写,支持任意扩展名及无扩展名

在IIS下面实现URL的重写 Asp.Net中不修改IIS实现URL重写,支持任意扩展名及无扩展名 说到不用设置iis,主要是为了实现在虚拟主机或是拿不到iis操作限的时候...
  • wnety
  • wnety
  • 2011-08-02 10:43
  • 561

Asp.Net中不修改IIS实现URL重写,支持任意扩展名及无扩展名(伪静态)

说到不用设置iis,主要是为了实现在虚拟主机或是拿不到iis操作限的时候,不能添加isap又想实现类似于静态化的程序实现方式,先声明,这里最终要实现的效果是,最终可以用 12345.html 替换...

Asp.Net中不修改IIS实现URL重写,支持任意扩展名及无扩展名(伪静态)

说到不用设置iis,主要是为了实现在虚拟主机或是拿不到iis操作限的时候,不能添加isap又想实现类似于静态化的程序实现方式,先声明,这里最终要实现的效果是,最终可以用12345.html替换show...

Asp.Net中不修改IIS实现URL重写,支持任意扩展名及无扩展名

说到不用设置iis,主要是为了实现在虚拟主机或是拿不到iis操作限的时候,不能添加isap又想实现类似于静态化的程序实现方式,先声明,这里最终要实现的效果是,最终可以用12345.html替换show...

Asp.Net中不修改IIS实现URL重写,支持任意扩展名及无扩展名

说到不用设置iis,主要是为了实现在虚拟主机或是拿不到iis操作限的时候,不能添加isap又想实现类似于静态化的程序实现方式,先声明,这里最终要实现的效果是,最终可以用 12345.html 替换...

在ASP.NET中如何实现和利用URL重写

在ASP.NET中如何实现和利用URL重写 作者:IT168 思维牧童  2008-01-08 内容导航: 源:http://tech.it168.com/msoft/20...

在ASP.NET中如何实现和利用URL重写

灵活的URL重写可以让你的网站增加可用性和专业性。在帮助网站更好的被搜索引擎索引收录方面,这也是一个重要的因素。在本篇文章中,我将带你了解如何在ASP.NET中简单的实现URL重写,以及一些常见问题的...

ASP.NET利用HttpHandler实现多扩展名文件下载

以前写过这样一篇文章(ASP.NET文件下载函数(好用的东东)),发现很多朋友询问,并且有时候会发生错误,今天我再重新更新一下,利用IHttpHandler来实现多扩展名文件下载,思路是这样: ...
  • qbook
  • qbook
  • 2011-11-11 16:47
  • 501

ASP.NET利用HttpHandler实现多扩展名文件下载

原文:http://blog.itpub.net/12639172/viewspace-545679/ 以前写过这样一篇文章(ASP.NET文件下载函数(好用的东东)),发现很多朋友询问,并...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)