服务器 发布日期:2024/11/6 浏览次数:1
IIS版本:IIS 7.5
URL Rewrite组件:IIS URL Rewrite Module(http://www.iis.net/downloads/microsoft/url-rewrite)
根据需要,点击右侧的下载链接(操作系统是64位的,就下载x64版本;32位的系统,就下载x86版本)
注意的是,目前安装的版本都是英文的了。
下载完成之后,安装重写模块。
下载的是本地msi包(rewrite_amd64.msi或者rewrite_x86.msi),双击安装即可(安装之前最好先停止IIS服务,如果IIS服务没停的话,安装完成后会要求重启系统。)
安装完成后,打开“Internet 信息服务(IIS)管理器”,就可以看见模块中多了一个Url Rewrite 模块。
进入需要设置的站点,双击 Url Rewrite 图标,进入设置界面。
点击Add Rule(s)输入Rewrite重写规则。
确认无误后,点击右栏的“应用”按钮,大功告成
当然你也可以从原来配置的伪静态文件导入:支持isapi的httpd.ini或.htaccess
案例:
很友好的URL地址,使访问的人很容易记住。要求你的用户记住“ https://www.jb51.net/article.aspx"https://img.jbzj.com/file_images/article/201606/20160607230357.jpg" alt="" />
规则的名称应该是唯一(不重复)的,匹配字符串“^article/([0-9]+)/([_0-9a-z-]+)”是正则表达式,将匹配满足一下标准的任何URL字符串:
1、开始于“article/”字符序列。
2、在“/”后包含一个或多个数字字符。
3、在第二个“/”后包含一个或多个字母或“_”或“-”。
因为我们创建一个支持重写URL的规则,因此规则类型是“Rewrite“。重写字符串(Rewrite UR)“article.aspx"_blank" href="http://www.iis.net/downloads/default.aspx">http://www.iis.net/downloads/default.aspx"_blank" href="http://www.iis.net/downloads/default.aspx">http://www.iis.net/downloads/default.aspx"~/test/([a-zA-Z0-9_\-]+)/(\d+).html\" to="~/test.aspx" processing="stop"/>
换成
<rule name="OrgPage" stopProcessing="true">
<match url="^test/([a-zA-Z0-9_\-]+)/(\d+).html\" />
<action type="Rewrite" url="test.aspx" />
</rule>
2.UrlRewriter中 url="~/module/“ ,在URL Rewrite Module中必须换成^module/,否则就算test通过,在实际环境中也无法解析;
3.以前 UrlRewriter中 url="^/([a-zA-Z0-9_]+)“是可以的,但是在URL Rewrite Module中不行,必须添加参数
<conditions logicalGrouping="MatchAll">
<add input="{HTTP_HOST}" pattern="^blog\.lehu\.shu\.edu\.cn$" />
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
4.另外需要注意IIS6的config转换到iis7的时候,需要删除applicationHost.config中<handlers accessPolicy="Read, Script" />的多余参数,或者干脆重新建立,否则会出现很多奇怪的问题,我昨天为了这个搞了好几个小时,后来才发现问题。
总体上说,IIS7比IIS6稳定些了,到现在位置,IIS6中总是出现的缓冲池死在IIS7中很少出现。具体情况还需要测试。
规则定义截图:
Web.config中的规则定义:
复制代码 代码如下:
<rewrite>
<rules>
<rule name="RequestBlockingRule1" enabled="true" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{HTTP_REFERER}" pattern="^$" negate="true" />
<add input="{HTTP_REFERER}" pattern="^http://(.*\.)" negate="true" />
</conditions>
<action type="CustomResponse" statusCode="404" />
</rule>
</rules>
</rewrite>