IIS中的URL重写

IIS配置URL重写 IIS配置URL重写一开始IIS配置伪静态,参考了 http://www.cnblogs.com/simoje/p/4764392.html http://www.cnblogs.com/Fooo/archive/2011/09/24/2189744.html 也是各种尝试没能实现,后来我看到URLRewrite组件,最后成功实现了伪静态,下面附上配置步骤。 阅读详情

1.  概述

 

   突然间接到了一个任务,将URL中的一个字段都转成另一个字段,然后再重新发送到Server端,例如将http://***/GEO/***转换成 http://***/ArcGIS/***,然后再转发到Server端,上网查了一下资料,突然发现这里面有很大的研究空间,现在在这里学习一下。

   所谓的URL重写就是截取传入Web请求并自动将请求重定向到其他URL 过程,比如浏览器发来请求hostname/101.aspx 服务器自动将这个请求中定向为http://hostname/list.aspx?id=101 ,url重写的优点在于:

   1.缩短url 隐藏实际路径提高安全性

   2.易于用户记忆和键入

   3.易于被搜索引擎收录

    一般常用的URL重写方式有ISAPI重写,.NET重写等。在这里我首先对ISAPI重写方式进行学习和总结,然后再对.NET重写的方式进行学习总结。

 

2.  ISAPI方式重写URL

 

    在ISAPI方式重写URL中有两款好用的第三方插件可以供我们选择,两款服务器扩展插件都有各自的拥护者,通过笔者的试用,各有千秋。

一种是ISAPI_Rewrite,

下载地址在:http://www.helicontech.com/download/

    这里只有ISAPI Rewrite的一个LITE版本是免费的,其它都是trial版本。ISAPI Rewrite Lite的版本功能不支持虚拟站点配置,元数据监测和自动缓存清理。 但是基本的UrlRewrite功能都支持。该款服务器扩展插件是利用正则表达式来进行替换规则的控制。

另一种是 IIRF (为了方便少写几字,以后的Ionic’s Isapi Rewrite Filter将全部简写),

下载地址在:http://iirf.codeplex.com/

    IIRF是一款开源的重写URL过滤器,类似于Apache的URL重写,基于VC8.0(可以用Visual Studio2005或Visual C++ 2005 Express重新编译)开发。它可以运行在IIS5.0+,支持ASP,ASP.NET,PHP等许多格式。相对比ASP.NET2.0自带的URL重 写,具有更好的性能和许多我们所需要特性,重要的一点在于:它可以支持无扩展名的URL(例如:cnlbogs.com/****,你无需在创建一个默认 的default.aspx文件,IIRF自动会帮你解析),让URL更加的方便我们记忆,也能进一步提高搜索的排名?IIRF能够在 aspnet_isapi提前捕获我们所请求的URL进行处理,如果我们访问cnlbogs.com/a.aspx,需要获取cnlbogs.com /a.htm,步骤需要(iis-aspnet_isapi),通过IIRF,我们可以直接跳aspnet_isapi.dll,直接访问a.htm,要 知道,这种方式在ASP.NET是无法实现的。

    IIRF跟重写URL一样,它也是基于正则的方式来匹配,具有LOG记录,请求的条件判断。还是进入正题吧。

 

2.1  IIRF

 

2.1.1 安装

 

    IIRF安装需要我们手动操作来完成。不过。也是很方便了。

    1. 将IsapiRewrite4.dll, IsapiRewrite4.ini复制到c:/windows/system32/inetsrv(你也可以复制到其它适当的文件夹下面), IsapiRewrite4.ini是IIRF配置文件,每次该文件更改之后,IIRF会自动重新加载该文件,无需重启IIS来重新加载配置,如果您修改 后INI文件后格式不正确,IIRF将会自动获取最后正确加载的配置文件;

    2. 打开IIS管理器,选择“默认网站”,右击“属性”,选择“ISAPI筛选器”,点击“添加”,输入筛选器名称:Ionic Rewriter,可执行文件选择上面复制到c:/windows/system32/inetsrv下面的IsapiRewrite4.dll文件,点 “确定”;

    3. 重启IISADMIN service服务;(在计算机管理—-windows服务里面)

    4. 完成。

 

2.1.2  日志


    IIRF能够将INI配置文件加载,用户的URL请求记录都会保存到指定的日志文件里。因为具有很大的性能开销,因此建议将日志的记录等级设为0,只有为了方便调试的时候时候,可以设置为5。

     RewriteLog <filename stub>   保存的日志路径,如 c:/temp/iirfLog.out

     RewriteLogLevel {0,1,2,3,4,5} 日志的等级,默认值为0,

     0 –不会记录日志;

     1- 少许的日志;

     2-  比较多的日志;

     3- 比较详细的日志;

     4- 详细的日志(4),并会跟踪server variable和替换的字符串;

     5- 详细的日志(5),包括日志文件更改的事件,建议方便调试的时候使用。

 

2.1.3  正则

 

    正则的语法跟.NET一样,只不过是格式不一样而已。所以我也不在详细介绍。具体有关正则的说明大家可以google一下。

 

2.1.3.1  RewriteRule

 

R ewriteRule <url-pattern> <replacement-string>   [<modifiers>]

url-pattern :匹配的正则表达式(必需)

replacement-string :要替换的字符串(必需)

modifiers :有关对RewriteRule的操作标记。可选选项。在下面我会说明

默认下IIRF的 url-pattern,replacement-string正则的前面已经带了主机头的。
为了方便描述,直接看几个示例(以下示例基本全部来源IIRF文档)

例1

RewriteRule  ^/original/(.*).php  /modified/$1.aspx

源:http://xxx/original/index.php

目标:http://xxx/modified/index.aspx

例2

RewriteRule  ^/dinoch/album/([^/]+)/([^/]+).(jpg|JPG|PNG)   /chiesa/pics.aspx?d=$1&p=$2.$3

源:http://xxx/dinoch/album/30/1.jpg

目标:http://xxx/chiesa/pics.aspx?d=30&p=1.jpg

规则比较简单,主要还在于modifiers的功能。下面列举了它的所有值,允许组合(如[R,L])。

1.[R]  or [R=code]

R = Redirect(URL跳转到<replacement-string>地址

就像我们在.NET使用的Redirect方法一样,重新改变浏览器的方向,跳转到新的指定的URL中。

[R=code]允许我们指定特定的HTTP状态返回码。只能介于301到399。如果超出这个范围。默认会是使用302状态。

RewriteRule ^/goto.aspx?r=(.*)$ $1 [R]

源:http://xxx/goto.aspx?r=http://www.google.com/

目标:http://www.google.com

2.[NF]

NF = Not found(返回404错误给用户,但该文件并未移除,还是保留在网站中)

它还可以跟RewriteCond一起配合,来实现自定义的404错误请求。特别要注意,你所要匹配的文件必须存在,替换的字符串不允许是存在文件名

RewriteRule ^/1008.aspx$ /1.aspx [NF]

1008.aspx文件需要存在,1.aspx不存在,否则无法正常达到我们的结果。

3.[L]

L = Last test if match(如果已经匹配,将不在继续匹配下去)

4.[F]

F = Forbidden(跟NF标志相似,)

5.[I]

I = Do case-insensitive matching 模糊匹配

6.[U]

U = Store original url in server Variable HTTP_X_REWRITE_URL(保存原始的url到HTTP_X_REWRITE_URL服务器变量中。)

    保存原始的url到HTTP_X_REWRITE_URL服务器变量中。在ASP.NET你可以用Request.ServerVariables["HTTP_X_REWRITE_URL"]获取原始值。

 

2.1.3.2  RewriteCond

 

RewriteCond <test-string> <pattern> [<modifier flag[,...]>]

类似于条件判断,并且允许多个条件,OR,AND。只有当RewriteCond的Server Variable 匹配所指定的正则表达,RewriteRule才会执行。比如:

RewriteCond %{REMOTE_ADDR} ^(127.0.0.1)$

RewriteRule ^/(.*).aspx$ /$1.aspx

如果我们访问网站的地址的IP来源于127.0.0.1,那么,允许 RewriteRule ^/(.*).aspx$ /$1.aspx

RewriteCond %{REMOTE_ADDR} ^(127.0.0.1)$ [OR]

RewriteCond %{REMOTE_ADDR} ^(192.168.0.10)$

RewriteRule ^/(.*).aspx$ /$1.aspx

添加了OR来多个条件判断

RewriteCond %{REMOTE_ADDR}   ^(?!127.0.0.1)([0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3})(.*)$

RewriteRule  ^/(?!redirected.htm)(.*)$      /redirected.htm

Modifier flags 有二个值

I =模糊匹配

OR =逻辑判断

    从IIRF的RewriteCond的功能上来说,确实很灵活另外。RewriteCond的[Patterns]可以带下面几个参数

-d

    Treats the TestString as a pathname and tests if it exists,and is a directory.

    TestString是一个路径名称,并且存在这个路径

-f

    Treats the TestString as a pathname and tests if it exists and is a regular file.

    TestString是一个路径名称,并且是一个存在的文件

-s

    Treats the TestString as a pathname and tests if it exists and is a regular file with size greater than zero.

    TestString 是一个路径名称,并且存在文件超过0字节

如文档所使用的例子

(1)RewriteCond %{HTTP_URL}                (/|/.htm|/.php|/.html|/[^.]*)$   [I] )

    如果URL是以htm,php,html(模糊匹配),

(2)RewriteCond %{REQUEST_FILENAME}                      !-f

    URL不是存在文件

(3)RewriteCond %{REQUEST_FILENAME}                      !-d

    URL不是请求的路径                                

(4)RewriteRule ^.*$                      /index.aspx                      [U,L]

     将所有请求跳转到index.aspx,保存原始的URL,之后不在对此进行匹配

再如,

RewriteCond  %{HTTP_USER_AGENT}  ^Mozilla.*

RewriteRule  ^/$                 /homepage.max.html  [L]

 

2.1.3.3  IIRF其它配置属性

 

IterationLimit {integer} 从指定的integer后开始匹配RewriteRule组。如果超出RewriteRule个数,默认将会从第8个开始。

MaxMatchCount {integer} RewriteRule组的总个数。

RewriteLog <filename stub> 日志路径。

RewriteLogLevel {0,1,2,3,4,5} 日志的等级。

2.2  ISAPI_Rewrite

 

 

参考资料

 

http://msdn.microsoft.com/zh-cn/library/ms972974.aspx#XSLTsection123121120120

http://blog.sina.com.cn/s/blog_4027f79a0100dy8t.html

http://www.cnblogs.com/yiki/archive/2009/04/14/1435504.html

http://blog.joycode.com/scottgu/archive/2007/03/01/94004.aspx

http://www.theserverside.net/tt/articles/showarticle.tss?id=IIS_ASP

IIS7上进行URL重写(Windows主机) IIS7本地不支持。htaccess文件。虽然有插件可以添加这个支持,您也可以htaccess规则导入到IIS使用CakePHP的原生重写。要做到这一点,遵循这些步骤: 使用微软Web平台安装程序2.0安装URL重写模块或直接下载它(32位/ 64位)。 创建一个名为web的新文件。配置在CakePHP根文件夹。 使用记事本或任何对它们进行编辑,将下面的代码复制到你的新网站。配置文件 阅读详情

相关推荐

IIS服务器URL重写配置完整教程

本文介绍了如何在IIS服务器上配置URL重写功能。首先,从指定链接下载并安装URLRewriteModule 2.1和Application Request Routing (ARR)。安装完成后,启用ARR的代理功能。接着,在IIS中打开URL重写功能,并添加一个空白规则,将/api/重写为http://localhost:5566/api/。配置完成后,通过访问http://localhost/api/sys/auth/b/getLoginUser测试重写是否生效,确保请求被正确重定向到http://l

2051

很高兴,成功将DVBBS模拟成静态HTML页面

/*? 版权说明:转帖时,请保留以下完整信息? 作者:Dili J.F. Senders? 邮件:diliatwellknow.net? 网站:http://12986.com? 更新:20041015? 支持:http://cs.12986.com? 更多:http://12986.com/n989c26.aspx*/很高兴,成功将DVBBS模拟成静态HTML页面isapi_rewrite已经成

wellknow 3447

计算机考研复试面试常问问题 数据结构篇(下)

计算机考研复试面试常问问题 数据结构篇(下) 使用前需知(拒绝白嫖,如果对你有帮助,你只需点个赞就行): 注意:有人在闲鱼上盗卖我的资料,而且还有很多同学买了,请各位擦亮双眼,我是整理出来免费分享给大家的! 大家请多点赞和评论,这样后面的同学更容易百度到,不至于被人盗卖,我就不加水印影响大家使用了! 第一次整理,度不好控制,有不好的地方希望大家理解,后面可能会改进,造福今年之后的同学们! ...

程序员宝藏的博客 1万+

iis 10 配置 URL重写不生效

iis 10 部署 asp 项目遇到的问题,潦以记录。

Laoyulvtu的博客 5149

DSP28335量产升级避坑指南:C2Prog串口烧录.hex文件,为什么我推荐COM1?

本文详细解析了DSP28335量产升级中C2Prog串口烧录.hex文件的最佳实践,重点推荐使用COM1端口以确保稳定性。通过实测数据和底层机制分析,揭示了Windows系统对COM1的特殊优化及C2Prog工具的时钟切换逻辑,帮助开发者规避常见陷阱,提升烧录成功率。

weixin_27066963的博客 384

汇川伺服驱动器参数优化实战指南

本文详细介绍了汇川伺服驱动器参数优化的实战技巧,涵盖控制模式选择、电子齿轮比调整、刚性匹配与振动抑制等关键内容。通过实际案例和实用技巧,帮助工程师快速掌握伺服驱动器参数调校方法,提升设备运行精度和稳定性。特别针对高精度定位和高速响应场景提供了专业指导。

weixin_29070721的博客 736

安装和使用IIS的URL重写工具

这几天正在忙自己的个人网站,遇到一个需求,就是把普通的http请求全部转发到https上。百度得知,使用默认的IIS功能无法做到这一点,必须安装一个额外的工具:URL重写工具。但是默认没有安装。这里就来先安装一下。安装URL重写工具首先到URL重写工具下载页面,点击页面上的安装此扩展按钮。这样会跳到Web平台安装程序的下载页面,如果没有安装此工具,就在这里下载并安装;如果已经安装此工具,就直接打开,

乐百川 7758

从零搭建企业网络:使用Packet Tracer模拟多区域OSPF组网全过程

本文通过Cisco Packet Tracer模拟,详细演示了从零搭建一个典型企业多区域OSPF网络的完整流程。内容涵盖网络拓扑规划、IP地址设计、多区域划分原理,并提供了从设备初始化、接口配置到OSPF多区域核心配置与验证的详细步骤。文章旨在帮助网络学习者与IT支持人员通过动手实验,将理论知识转化为实际的配置与排障能力。

day7的博客 1032

IIS配置URL重写,http重定向https

IIS配置URL重写,http重定向https,http怎么重定向到https最全解决方案,安装iis插件,URL重写,配置重定向。URL重写是指服务器程序对接收的URL请求重新写成网站可以处理的另一个URL的过程。URL重写技术是实现动态网站会话跟踪的重要保障。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 7344

模拟量输入功能块 S_ITR(Easy系列PLC完整ST源代码)

IN Input INT 输入数字量 1IN ISH INT 输入数字量上限 2IN ISL INT 输入数字量下限 3IN OSH REAL 输出工程量上限 4IN OSL REAL 输出工程量下限 5OUT OUTPUT REAL 输出工程量 6VAR temp1 REAL 临时变量1 7VAR temp2 REAL 临时变量2 8。

RXXW_Dor的博客 716

重回童年的经典系列☀️| 【坦克大战3D版】游戏制作+解析

带你重回童年的经典系列——坦克大战3D版制作,感兴趣的可以看看呀~

努力前行,总会成为自己心中的那道光 5万+

Windows Server IIS URL 重写模块配置参考

URL 重写模块将请求 URL 重写为简单、用户友好和搜索引擎友好的地址,这些地址会显示给用户或在 Web 应用程序中使用。URL 重写使用定义的规则来评估并映射请求 URL,然后在由 IIS Web 服务器处理之前将其映射到规则中定义的地址。您可以定义包含正则表达式和通配符的 URL 重写逻辑,并且可以根据请求 URL、HTTP 头和服务器变量来应用规则。模块的主要用途是将请求 URL 重写为更友好的 URL,但您也可以使用该模块来定义执行重定向、发送自定义响应或中止请求的规则。

2594

Linux内核4.14版本——drm框架分析(1)——drm简介

本文介绍了DRM架构的发展历史、驱动框架以及简单示例,旨在帮助读者了解DRM架构的形成、功能流程实现。

phmatthaus的专栏 2558

IIS部署vue项目 IIS重写URL

4, 注意,会在vue站点的根目录里面生成一个web.config的配置文件,发布更新要保留这个配置文件,不然又要重新配置一次。1, 因为VUE页面驱动是靠项目内的路由跳转,要保证每次页面都在根目录下的 /index.html。2, 若是此处不添加规则,访问网站首页可以,但你刷新后或跳转页面就会出现 404 错误。2, 成功配置一次即可理解使用方式. 相当于配置vite.config.js的代理.2). 安装 Application Request Routing,1). 安装URL Rewrite,

4240

2023华为od机试C卷【最富裕的小家庭】C++ 实现

在一颗树中,每个节点代表一个家庭成员,节点的数字表示其个人的财富值,一个节点及其直接相连的子节点被定义为个小家庭。现给你一颗树,请计算出最富裕的小家庭的财富和。

MISAYAONE的博客 1240

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

ISAPI Rewrite IIS下的Url重写

什么是URL重写(URL Rewrite)? URL 重写就是把传入 Web 请重定向到其他 URL 的过程。 比如浏览器发来请求http://www.test.com/tags/,服务器自动将这个请求中定向为http://www.test.com/tags.asp 我们知道在Apache中有mod_rewrite来实现URL的重写功能(URL Rewrite),然而IIS并没有自带这个

37度2 2030

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

使用IIS的Url重写路由

使用IIS的Url重写路由1、解决Vue刷新404的问题2、重定向到https3、不带www重定向到带www 1、解决Vue刷新404的问题 设置之后会在项目目录下生成一个web.config文件,内容如下: <?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <rewrite> <rules>

csdmwinter的博客 2948

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

在IIS中使用URL重写功能

首先需要下载和isapi rewrite的插件,下载路径http://www.helicontech.com/download/#isapi_rewrite一般下这儿个免费版就可以了[ISAPI_Rewrite Lite x64 Release ( freeware ]然后打开IIS--网站属性--ISAPI 筛选器---添加---(名称可随便写,可执行文件就是指向安装好的ISAPI_Rewrit

no_mIss的专栏 3579

IIS设置URL重写,实现页面的跳转的重定向方法

默认IIS是不提供URL重写模块的。 请注意,不要将IIS默认的HTTP重定向理解为url重写。 安装url重写模块 url重写,是要从iis的应用市场下载url重写组件才可以的。 URL重写工具的下载地址: 64位版本 32位版本 设置规则 比如我样实现访问www.demo.com/1.aspx 自动跳到新地址www.demo.com/1 规则设置如下: 在配置了url重写组件的IIS...

逐浪CMS发哥的博客 6633

【URL重写】IIS7配置URL重写

URL Rewrite Module 此模块适用于IIS7、7.5、8。 微软在IIS7中添加了URL的重写模块,并且免费使用,可以导入.htaccess规则,但需要安装。 第一步:安装URL2.0模块 (图-1) (图-2) 然后关闭当前窗口,重新打开服务和应用程序(IIS管理),即可看到,安装成功 (图-3) 第二步:配置站点(重点+难...

weixin_30849403的博客 1531

vue2、vue3配置IIS的URL重写

vue2、vue3配置IIS的URL重写

橙-极纪元-JJYCheng 1114

几个免费的 IIS URL 重写工具

ISAPI Rewrite http://www.helicontech.com/ 国内较多站点使用的工具,Discuz 提供的FOR IIS URL重写就是基于该工具完成的。Lite免费,F

大森林的专栏(Jack Wu) 2156

IIS URL重写实现重定向

IIS HTTPS 不带 www 重定向到带 wwwURL重写软件下载: IIS HTTP 重定向到 HTTPS: 添加一个独立响应http 请求网站,在这个网站下面配置 URL重写,重定向到HTTPS中。 ...

爱人BT的博客 4700

关于IIS URL 重写, 规则模式

准备 不说话,先为IIS安装URL 重写组件,ARR组件。 http://www.iis.net/downloads/microsoft/application-request-routing 启动ARR, Enable proxy。 https://www.iis.net/downloads/microsoft/url-rewrite 操作 设置当前对外访问站点的端口是...

读万卷书,行万里路。 8269

iis url重写 域名跳转子目录_IIS设置URL重写,实现页面的跳转的重定向方法

默认IIS是不提供URL重写模块的。请注意,不要将IIS默认的HTTP重定向理解为url重写。 安装url重写模块url重写,是要从iis的应用市场下载url重写组件才可以的。URL重写工具的下载地址: 64位版本 32位版本设置规则比如我样实现访问http://www.demo.com/1.aspx自动跳到新地址http://www.demo.com/1 规则设置如下:在配置了url重写组件...

weixin_39836943的博客 1004

vue 部署 iis URL重写

1、下载所需模块:urlrewrite 2、设置规则 安装好模块之后,在IIS是图界面会看到"URL 重写" 3、双击之后,进入URL重写界面,在右上角点击"添加规则": 选择"空白规则",名称随意起、模式中改为 .* 4、设置条件。手动展开"条件"选项,添加一个"条件",选择"不是文件"。 5、手动展开"操作"选项,设置"重写URL"为"/index.html",然后点击右上角应用 ...

qq_34715793的博客 3224
上一篇: 常用Java开源库
下一篇: Oracle安装
SmartDevice
博客等级 码龄20年 15粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值