• Welcome to Journal web site.

我是 PHP 程序员

- 开发无止境 -

Next
Prev

使用IIS的URL Rewrite模块来实现URL重写以及跳转作业

Data: 2015-06-09 03:17:59Form: JournalClick: 16

我是 视觉 设计师
使用IIS的URL Rewrite模块来实现URL重写以及跳转作业-开发技巧-郭俊杰的设计魔方

 

    在项目开发时需要特定的页面进行301跳转或者伪静态时就需要重定向组件的使用了,在Apache下好办,直接启用htaccess直接写就好。但在IIS环境下就会麻烦一点需要另外安装IIS URL Rewrite组件,这边就记录一下这个组件的使用方法。

官方下载地址:
http://www.iis.net/downloads/microsoft/url-rewrite

官方说明文档:
http://www.iis.net/learn/extensions/url-rewrite-module/using-the-url-rewrite-module

    下载完成后直接安装,程序会自动检测路径直接下一步即可,直到finish结束,重新打开IIS管理器就会出现URL Rewrite的图标

点开会出现管理界面

在这个界面里头我们就可以添加规则了

    我这边简单举个例子:我想用户访问 XXX.com/123.html 页面时会自动跳转到 xxx.com/aaa.html。

实现的方法很简单,右上角点击》添加一条规则》空白规则。

    在名称里头输入你想记录的名字,如 123 跳转 aaa,这个名字是标注用的,自己知道就行。下面的匹配URL选择 与模式匹配 这个意思就是IIS会根据我们选的规则来调整,如果选择  与模式不匹配 IIS会排除我们的规则而选中其他所有的访问URL来执行,所以我们要选择 与模式匹配  。

    使用 这一栏选择 完全匹配,因为这是一条定死规则,不是灵活的url所以不需要正则来表达。模式 就直接写 123.html,需要注意的是这边不要写上域名!不然不会生效,直接写域名后面的地址第一个/也不要的,不放心可以点一下测试模式来判断是否有效,忽略大小写就看情况勾选,建议是勾上。

    条件这边是相当于二次判断,这边是简单跳转就不用填,正则表达式下就可能要写了。而服务器变量是高阶正则下需要搭配服务器变量时才需要使用的,绝大多数情况下都不需要填写。

    最后的 操作界面 就是我们要跳转的目标了,我们可选重写URL 或者 重定向 或者 其他访问状态,一般我们是选择 重写URL 或者 重定向 。两者差异是:前者不改变URL地址只修改解析的内容,用于伪静态时使用较多;后者就是直接跳转页面实现301状态了

这样填写点击右上角的应用,重启一下站点就可以生效了

刚才的操作就实现了简单的301跳转页面,接下来记录一下正则的表达方式重写

    例子:我想用户访问 XXX.com/show/test/下的任意html页面时会自动解析到 xxx.com/html/php/对应编号php页面,实现伪静态。

    这种需求如果用写实的完全匹配会累死人,而且效率很低,这这时候就需要正则来帮你了。

    同样添加一条空白规则,名字自定。在匹配URL这边选择正则表达式,模式填写 ^(.*?)show/test/(.*?).html$ 这边解释一下意思。

    ^就是正则开始的意思一般写在最开始位置,()表示一个正则表达式的开始跟结束,.是表示匹配出换行n字符外所有字符,*表示匹配零次或者多次,?表示零次或者一次,$表示正则结束,(.*?)组合起来就是匹配任意字符直到下一个符合条件的字符,如表达式a(.*?)xxx,可以匹配abcxxx、acxxx、abbbxxxx等。

    我们测试一下:

    

    这边有结果了。下面也出现{R:0}~{R:2}的向后引用参数,这个参数我们在重写这边填入{R:1}/html/php/{R:2}.php,点击应用就可以实现伪静态效果了

    最后讲一下条件界面有什么用,例如我这个站点绑定了2个域名,xxx.com做伪静态,而ccc.com不想做伪静态时就需要条件筛选了,其实就相当于模式操作之前再加了一个判断方式。

    我们添加一条条件,在条件输入这边 填入{HTTP_HOST},就是获取域名的意思,选择与模式匹配,在模式这边输入正则^xxx.com$这样做测试是会出现一个{C:0}的反相应用条件

这样就只会在xxx.com域名下生效伪静态,ccc.com域名下就不会生效。其实IIS下的URL Rewrite工具简单好用,就是跟我们平时用htaccess的习惯略有不同,多试几次习惯了就好。

 

Name:
<提交>