- 开发无止境 -
Data: 2015-06-09 03:17:59Form: JournalClick: 16
在项目开发时需要特定的页面进行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的习惯略有不同,多试几次习惯了就好。