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),不能传递参数的重写几乎没有什么意义。

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

  1. 在ASP.NET中重写URL 方法三:在IIS7中使用HttpModule 实现无扩展名的URL重写

    上述的HttpModule方法在你要重写的URL含有.aspx 扩展名或者包含另一个被设置为ASP.NET处理的扩展名的情形下一切都工作.你这么做的话,不需要任何特定的服务器配置,你只要把你的应用拷贝 ...

  2. iis5.1/6.0/7.0+ 配置url重写 无扩展名伪静态

    最近在搞url重写 遇到iis 无扩展名及html映射问题 供后人查看 因为考虑功能比较多(URLRewriter组件有些功能满足不了要求)所以就用了HttpModule方法重写 iis5.1中 添加 ...

  3. 用Nginx如何配置运行无扩展名PHP文件或非.PHP扩展名文件

    用Nginx如何配置运行无扩展名PHP文件或非.PHP扩展名文件 使用Apache + PHP 很容易做到运行无扩展名的PHP文件. 在Nginx中能做到吗?是可以的. 只需将nginx.conf文件 ...

  4. Asp.Net中修改扩展名的问题

    关于Asp.Net中的扩展名修改问题,方法有很多种,而且有比较成熟的第三方组件.这方面的东西在老赵点滴上说的很明白.我在这里给大家介绍一种比较简单的方法通过配置IIS来实现. Framework1.1 ...

  5. 如何设置IIS实现无扩展名重写

    打开站点或者虚拟目录的属性框,在"目录"页里面点击"配置..."按钮 弹出"应用程序配置"框后,点击下面的"插入..." ...

  6. misc中文件无扩展名修复

    在CTF的misc杂项中,经常会发现一些文件无扩展名,因此我们需要使用winhex(密码是:x56l)去查看文件的16进制编码.常见的文件头如下: (JPEG)jpg: FF D8 FF (PNG)p ...

  7. mac 修改无扩展名文件的默认打开方式

    适用于macOS 12.6 无扩展名文本文件默认使用"文本编辑"打开,按传统方式修改会提示没有足够可用的信息. 首先获取目标应用的id:在终端运行osascript -e 'id ...

  8. php 请求url没有扩展名,apache – 将.php重定向到无扩展名,并在没有.php的情况下创建url...

    这条规则: RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([a-zA-Z0 ...

  9. Windows为无扩展名程序设置默认打开方式

    用Linux双系统时可能遇到这样的问题:Linux中创建的文件默认是没有扩展名的,而在Windows系统每次打开这种文件都要选择打开方式,非常麻烦.虽然在设置中有"."这种文件类型 ...

最新文章

  1. Alibaba代码规范插件、FindBugs插件安装及详解,IDEA插件安装,代码规范,代码查错,代码格式规范
  2. 拥抱iPhone,拥抱软件开发的未来
  3. 20亿参数,大型视觉Transformer来了,刷新ImageNet Top1
  4. 玩转python字体
  5. cocos2dx[3.2](18)——屏幕截图ScreenShot
  6. 织梦dedecms默认网站地图sitemap.html优化
  7. Python中的简单图案打印程序
  8. crystal ball 软件_推荐10个堪称神器的软件工具
  9. [Spring实战系列](6)配置Spring IOC容器的Bean
  10. virtualbox手动挂载共享文件夹
  11. 网站漏洞扫描工具 - PHPmvs
  12. OpenHarmony 3.2 Release HDF的IDL文件初探(上)
  13. 什么是SSL安全证书?
  14. linux中yum provide,linux之yum
  15. 附录3-form标签常用属性
  16. java中实现多态的机制是什么?
  17. SDWebImage如何避免复用
  18. leetcode/字符串交织,s1和s2字符串交织组成s3
  19. 再说for in循环
  20. 极客时间去除复制保护

热门文章

  1. 嵌入式linux应用程序升级,基于嵌入式Linux平台的应用升级机制的研究与设计
  2. LabVIEW仪表盘识别(实战篇—6)
  3. Opencv函数手册
  4. keras 的 example 文件 mnist_swwae.py 解析
  5. 通过打印学习Linux内核之sysfs(1)
  6. mysql怎么创建表视频教程_mySQL学习入门教程——2.创建表
  7. Hololens2-OpenXR开发(二)-实现通讯
  8. Node.js实现服务器端生成Excel文件(xls格式、xlsx格式文件)并弹出下载文件
  9. 个人建议:VSCode和WebStorm中的“关闭其他所有编辑器、关闭左侧编辑器、关闭右侧编辑器”快捷键这么设置shift+alt+w、shift+alt+[、shift+alt+],你会受益匪浅
  10. 判断手机是否弹出键盘,改变了手机页面高度,对应inputStatus的状态改变相关控件的大小和位置