当前位置: 首页 > 编程日记 > 正文

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

URL重写已经有很多的方法,但是多数都有一个缺点,就是不支持无扩展名的网页。微软提供的方法需要在根目录里面建立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不支持。因为asp的Server.Transfer不能带参数(?id=jyk),不能传递参数的重写几乎没有什么意义。

相关文章:

IDC公布中国深度学习市场综合份额:百度超越Facebook位列第二

近日,权威数据调研机构IDC公布了2020年下半年深度学习框架平台市场份额报告。数据显示,在中国深度学习平台市场综合份额中,Google、百度、Facebook稳居前三,占据70%以上市场份额。其中,百度占比提升3.38%增速第一&…

OpenStack 和 Cloud Foundry

上周我参加了在亚特兰大举行的OpenStack峰会,这是一个非常好的机会去进一步了解Cloud Foundry 和OpenStack ecosystem之间的关系。 在OpenStack阵营里,在讨论PaaS时,“Could Foundry 是不是 OpenStack” ,这个看起来像是一个有争议…

防止IIS文件被下载方法

如何才能防止encry目录下的所有文件被非法下载呢?我们可以应用IIS中的应用程序映射结合ASP.NET中的IHttpHandler自定义权限,把IIS应用程序映射用于所有文件,并将控制权交给我们自己实现的IHttpHandler。 首先添加应用程序映射:打…

转 如何在IOS设备中去掉屏幕上的status bar

引入如何在IOS设备中去掉屏幕上的status bar,即:不显示设备上方的[网络、时间、电池??]条?操作方法一:在-info.list项目文件中,加上“Status bar is initially hidden”选项,并勾选…

倒计时7天!博客之星虚位以待,Macbook等你来拿

也许你陪伴了CSDN一年的时间刚刚写下自己的第二十篇的原创技术博文也许你是陪伴了CSDN近20年风雨的老码农更新了近千百篇的技术文章也许你还在坚持着“技术输出”也许你已经开始封笔也许你刚刚突破粉丝数达到了三位,四位数也许你刚刚申请的博客专家,终于…

UVA 10515 - Powers Et Al.(数论)

UVA 10515 - Powers Et Al. 题目链接 题意:求出m^n最后一位数 思路:因为m和n都非常大,直接算肯定是不行的,非常easy想到取最后一位来算,然后又非常easy想到最后一位不断乘自身肯定会形成周期。而且这个周期还挺短的&am…

视觉+Transformer最新论文出炉,华为联合北大、悉尼大学发表

作者 | CV君来源 | 我爱计算机视觉Transformer 技术最开始起源于自然语言处理领域,但今年5月份Facebook 的一篇文章将其应用于计算机视觉中的目标检测(DETR算法,目前已有78次引用)使其大放异彩,并迅速得到CV研究社区的关注。已有研究表明&…

易宝典文章——怎样管理Exchange Server 2013邮箱地址

对于一个用户邮箱,即邮箱收件人来讲,在创建时Exchange会为其按照Alias分配一个邮件地址,即主邮件地址,也称为“主SMTP地址”或“默认答复地址”。但是在用户日常使用中可能会出现需要多个邮件地址的情况,比如&#xff…

使用FileUpload控件上传图片并自动生成缩略图、自动生成带文字和图片的水印图

本文借助vs2005中自带的FileUpload控件实现图片文件的上传并生成缩略图。实现过程:选择图片上传成功后,取得已经存在服务器的文件生成缩略图,并且判断是否是图片类型的文件,这个的判断可以在程序中修改,本程序只是判断…

Java -- JDBC 学习--通过Statement进行数据库更新操作

通过 JDBC 向指定的数据表中插入一条记录. 1. Statement: 用于执行 SQL 语句的对象 1). 通过 Connection 的 createStatement() 方法来获取 2). 通过 executeUpdate(sql) 可以执行 SQL 语句. 3). 传入的 SQL 可以是 INSRET, UPDATE 或 DELETE. 但不能是 SELECT 2.…

身份证号码验证-支持新的带x身份证

//--身份证号码验证-支持新的带x身份证functionisIdCardNo(num) { varfactorArr newArray(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1); varerror; varvarArray newArray(); varintValue; varlngProduct 0; varintCheckDigit; varintStrLen num.length; v…

装上后这 14 个插件后,PyCharm 真的是无敌的存在

来源 | Python编程时光作者 | 写代码的明哥Key Promoter X如果让我给新手推荐一个 PyCharm 必装插件,那一定是 Key Promoter X 。它就相当于一个快捷键管理大师,它时刻地在:教导你,当下你的这个操作,应该使用哪个快捷…

批量实现面向对象的实例

<!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>批量实现面向对象的实例</title> <script type"text/javascript"> window.onload function(){function Person(name,age){this.name name;this.…

读Zepto源码之操作DOM

2019独角兽企业重金招聘Python工程师标准>>> 这篇依然是跟 dom 相关的方法&#xff0c;侧重点是操作 dom 的方法。 读Zepto源码系列文章已经放到了github上&#xff0c;欢迎star: reading-zepto 源码版本 本文阅读的源码为 zepto1.2.0 .remove() remove: function()…

VSS的每日自动备份

小弟在项目中兼职担当配置管理员&#xff0c;备份VSS的重任当然也得我来扛着&#xff0c;不然兄弟们加班加点的劳动果实可能因为什么天灾人祸一不小心就挂了。以往备份VSS的频率是一月一次&#xff0c;近来受到上面的教导&#xff0c;备份频率较少&#xff0c;需要每日备份。难…

当 AI 闯入法律界,第一步是当律师的得力助手

来源 | HyperAI超神经责编 | 晋兆雨头图 | CSDN 下载自视觉中国长久以来&#xff0c;律师这一职业给大众的印象都是精英、雄辩、高薪&#xff0c;而这份工作背后的艰辛却很少被看到。除了出庭之外&#xff0c;律师们要花费大量时间与经历进行法律资料研究、合同文件审查等。为此…

Ubuntu下添加新分区并设置挂载点

Ubuntu下添加新分区并设置挂载点最近在做Android项目&#xff0c;可是解压根文件系统以后&#xff0c;就报警说硬盘不够。当初设置使用的大小为15G。不过扩展分区还是很方便的。当然首先你得设置添加使用的硬盘大小&#xff0c;这次我一下提高到了30G&#xff0c;看它还报警否。…

2016 只剩最后一个月 你的 技术债务 还清了吗?

一夜醒来&#xff0c;猛然发现&#xff0c;2016 已经只剩最后一个月了&#xff01; 回忆过去的 330 多个日与夜&#xff0c;哪些互联网圈的大事让你瞠目结舌&#xff1f; 也许是 AlphaGo 在堪称人脑游戏巅峰的围棋领域屡战告捷&#xff1b; 也许是 Pokmon Go 称霸大洋彼岸&…

给图片加上带版权的水印

我们在网站上有些时候需要给图片加上带版权的水印&#xff0c;.net的Graphics类可以很轻松的实现这一点。效果图&#xff1a;&#xff08;图片最上端的那行字便是我们加上的版权水印了&#xff09;实现代码&#xff1a; /**//// <summary> /// 生成带版权水印的图片 …

重磅推出开发者计划、App Store,赛灵思普及自适应计算的一大步

得开发者得天下。尤其随着AI技术落地趋势加剧&#xff0c;其中大部分创新来自软件应用&#xff0c;市场对软件开发者有着极大需求。因此&#xff0c;无论是互联网公司还是传统的IT厂商都在尝试将开发者沉淀到自己的平台。 作为FPGA的开创者&#xff0c;赛灵思正在突破主要支持硬…

Web 开发人员必备的随机 JSON 数据生成工具

在 Web 开发中&#xff0c;经常会需要一些测试数据来测试接口或者功能时候正确。JSON Generator 就是这样一款生成随机 JSON 数据的在线工具&#xff0c;Web 开发人员必备&#xff0c;记得收藏和分享啊。 您可能感兴趣的相关文章Verlet-js&#xff1a;超炫的开源 JavaScript 物…

bootstrap解析-栅格系统

.container(布局容器) 屏幕宽1200px以上&#xff08;col-lg&#xff09; 1. 默认width为1170px 2. padding,lefet和right各为15px,所以内容width为1140px;屏幕宽992px以上(col-md) 1. 默认width为970px 2. padding,lefet和right各为15px,所以内容width为940px;屏幕宽768px以上(…

asp.net中窗口相关操作总结(javascript)

1.打开新窗口 这个简单:Response.Write("<script language javascript>window.open(url);</script>"); 2.关闭窗口 //关闭当前窗口,并提示用户时候关闭,yes关闭,no退出 Response.Write("<script language javascript>window.close();</sc…

200万注册开发者,13亿张全景图片,90%数据生产环节AI化,百度地图生态全景升级2.0

12月29日&#xff0c; 2020百度地图生态大会在京举办。据介绍&#xff0c;在AI技术加持下&#xff0c;百度地图实现了90%数据生产环节AI化&#xff0c;全新升级生态全景2.0。 百度集团副总裁、百度集团首席信息官(CIO)李莹出席大会并致辞&#xff0c;她表示&#xff1a;“在20…

Sqlite3数据库之第三方库FMDB学习心得

很早之前就接触Sqlite数据库,但是之前对数据库操作未使用任何第三方库,只是实现基本的增、删、改、查功能,自己对着一本iPhone开发入门级的书籍写了一个类,基本能实现上述四个功能。最近在开发一个软件&#xff0c;由于是一个本地应用&#xff0c;经过再三思量&#xff0c;最好…

您会让自己的小孩将来从事软件研发吗?

您会让自己的小孩将来从事软件研发吗&#xff1f;非常多程序猿&#xff0c;都已经30多岁了。过了而立之年&#xff0c;有了自己的老婆&#xff0c;自己温馨的小家庭&#xff0c;自己可爱的小孩。小孩也都是00后的。“您会让自己的孩子从事软件研发吗&#xff1f;”本来小孩的事…

CSDN湘苗培优|成长,从走出舒适区开始

湘苗培优CSDN高校俱乐部报名火热进行中&#xff01;基础训练交付训练实践练习湘苗培优 随着我国信息产业飞速发展&#xff0c;通过常规灌输式培养出来的学员已经不能够满足企业要求。企业更缺乏的是具备自主学习能力、具备综合解决问题能力的高素质技术人才。高素质技术人才需要…

使用VS自带的混淆器防止你的程序被反编译

这里就介绍大家使用VS自带的混淆器dotfuscator.exe来阻止这种行为。首先要做的找到dotfuscator.exe&#xff1a; D:/Microsoft Visual Studio .NET 2003/PreEmptive Solutions/Dotfuscator Community Edition运行dotfuscator.exe首先是是否注册的界面&#xff0c;先不注册吧&am…

【124】排球基本技术

排球基本技术 1.基本技术的概念 是指在规则允许的条件下&#xff0c;运用人体解剖和运动生物力学的原理&#xff0c;所采用的合理击球和完成击球动作的其他配合的总称。 2.排球技术的特点 &#xff08;1&#xff09;完成动作时间短促&#xff1b; &#xff08;2&#xff09;完成…

FairyGUI和NGUI对比

一直在做Unity方面的游戏开发&#xff0c;经同事介绍了解到有这么一个GUI能提供跨平台的能力&#xff0c;有独立UI编辑器&#xff0c;而且功能强大&#xff0c;能够组合成复杂的UI界面&#xff0c;可以导出到Unity,Flash,Starling等&#xff0c;文档还说未来将支持UE4&#xff…