URL重写已经有很多的方法但是多数都有一个缺点就是不支持无扩展名的网页比如把 转换为 x?id=
微软提供的方法需要在根目录里面建立jyk的文件夹然后再建立一个defaultaspx的文件如果您有名会员的话这是一个不可想象的事情
另一个方法就是使用ISAPI过滤器但是这个一般需要在服务器上安装一个DLL文件自己没有服务器就不好办了
下面提供一个可以说是我发明的一个方法——不知道以前有没有人想到过——利用两个特性来实现
第一个IIS里面的找不到文件的错误设置
第二个 里面的ServerTransfer(topicaspx?id=jyk)
这两个结合起来就可以达到我们的目的了
思路利用b错误捕捉客户的请求再使用ServerTransfer转向
在我们访问 的时候假设这时服务器上没有jyk文件夹那么会返回什么结果呢?会返回一个无法找到该页的页面那么这个返回结果能不能自己控制一下呢?很幸运IIS提供了这个功能我们可以把这样的错误指定到网站里的一个页面
操作步骤
第一步打开IIS管理器网站属性——自定义错误标签——错误——点击修改——修改消息类型为URL在下面的文本框里填写处理这个错误得页面名称比如/noneaspx
第二步在我们的网站根目录下建立一个noneaspx的网页在里面随意写点内容(测试用)
设置完毕这时再访问x的网页内容了注意这时浏览器里面的URL地址仍然是而不是x 这一点很重要如果地址变了那就没有意义了
那么我们怎么把页面转到我们希望的页面呢这时所有的找不到文件的情况都会转到noneaspx文件显然这不是我们想要的最终结果那么我们怎么获取客户输入的网址呢?
打开noneaspx的后台文件
string URL = RequestUrlQuery
我们可以使用上面的语句来获取URL地址得到的地址格式是
?
其中 ?是固定的过滤掉它就是浏览器里面的URL地址了
剩下的事情就是根据情况来转换网页了可以拆串再用switch来判断也可以用正则表达式来判断因为我正则不熟我采用的是switch的方式正则表达式请参考其他的资料我也在找如果您找到了请共享一下谢谢
优点
支持无扩展名的网页不用建立文件夹和文件
思路简单用法也很简单代码也不复杂不涉及高深的理论
支持搜索引擎就是说可以被各大搜索引擎搜录
可以配合域名泛解析使用
缺点
需要修改一下IIS b错误的处理方法
效率要略微低一点
如果您只使用aspx的扩展名的话就可以不用修改IIS了
Asp不支持因为asp的ServerTransfer不能带参数(?id=jyk)不能传递参数的重写几乎没有什么意义