关于Server.Transfer(URL)和UrlReWrite的一个突发奇想
作者:
关于Server.Transfer(URL)和UrlReWrite的一个突发奇想
最近DV上有人提到Server.Transfer(Url),突然想到经常有人问的关于UrlReWrite地址映射技术,如果条件允许的话,Server.Transfer也能做一个假的地址映射
前提是主机要支持自定义404错误,否则下边的你不用看了!
假设我使用一个静态地址来访问我的某个页面,如:http://blog.goalercn.com/article/100.html(其实这个地址所对应的页面根本就不存在,因此就会自动显示404.asp页的内容),而实际显示的是http://blog.goalercn.com/article/article.asp?Id=100的内容,怎么弄呢?
先配置主机的404错误页:假设为404.asp,这里要使用asp扩展名的(为了能执行ASP脚本)
在404.asp页面中,先获取当前来源页的URL,从URL里来取得我们需要的ID参数,随便用一下简单的正则或是用INSTR,MID之类的配合使用,都可以轻松取得这个ArticleID,这里我就不写了
这样我们就得到了这个文章的ID编号:ArticleID,但是这里有一个问题,Server.Transfer(Url)里的这个Url是不可以带参数的,且这个Url必须为同一服务器上的页面,因此我们就需要用Session来传递一下这个ArticleID
Session("ArticleID") = ArticleID
Server.Transfer("article.asp")
article.asp页上接收这个Session("ArticleID"),从数据库中读出这个Session("ArticleID")相应的文章数据
有点投机取巧的意思 ,大概这么说一下我想都能明白了吧,不明白的人我也不说了 !
声明一下:我没有测试,虽然偶的服务器支持这些东西,但偶懒得去弄,确实没什么意思。有没有错误我也不知道,有错请指正!
补充:还是写一下吧
Dim PageUrl,ArticleID
PageUrl= Request.ServerVariables("URL")
Dim regExp
Set regExp = New RegExp
regExp.IgnoreCase = True
regExp.Global = True
RegExp.Pattern="/article/([\s\S]*?).html"
ArticleID=RegExp.Replace(PageUrl,"$1")
SET regExp=Nothing
前提是主机要支持自定义404错误,否则下边的你不用看了!
假设我使用一个静态地址来访问我的某个页面,如:http://blog.goalercn.com/article/100.html(其实这个地址所对应的页面根本就不存在,因此就会自动显示404.asp页的内容),而实际显示的是http://blog.goalercn.com/article/article.asp?Id=100的内容,怎么弄呢?
先配置主机的404错误页:假设为404.asp,这里要使用asp扩展名的(为了能执行ASP脚本)
在404.asp页面中,先获取当前来源页的URL,从URL里来取得我们需要的ID参数,随便用一下简单的正则或是用INSTR,MID之类的配合使用,都可以轻松取得这个ArticleID,这里我就不写了
这样我们就得到了这个文章的ID编号:ArticleID,但是这里有一个问题,Server.Transfer(Url)里的这个Url是不可以带参数的,且这个Url必须为同一服务器上的页面,因此我们就需要用Session来传递一下这个ArticleID
Session("ArticleID") = ArticleID
Server.Transfer("article.asp")
article.asp页上接收这个Session("ArticleID"),从数据库中读出这个Session("ArticleID")相应的文章数据
有点投机取巧的意思 ,大概这么说一下我想都能明白了吧,不明白的人我也不说了 !
声明一下:我没有测试,虽然偶的服务器支持这些东西,但偶懒得去弄,确实没什么意思。有没有错误我也不知道,有错请指正!
补充:还是写一下吧
Dim PageUrl,ArticleID
PageUrl= Request.ServerVariables("URL")
Dim regExp
Set regExp = New RegExp
regExp.IgnoreCase = True
regExp.Global = True
RegExp.Pattern="/article/([\s\S]*?).html"
ArticleID=RegExp.Replace(PageUrl,"$1")
SET regExp=Nothing
您可能感兴趣的文章:
- AspNetPager分页控件UrlRewritePattern参数设置的重写代码
- asp.net用url重写URLReWriter实现任意二级域名 高级篇
- asp.net用url重写URLReWriter实现任意二级域名 新
- asp.net用url重写URLReWriter实现任意二级域名
- asp.net下用url重写URLReWriter实现任意二级域名的方法
- windows server 2008R2系统 IIS7.5配置伪静态的方法(urlrewrite)
- URLRewriter最简单入门介绍 URLRewriter相关资源
- 利用404错误页面实现UrlRewrite的实现代码
- UrlRewrite 重写url详解及实例