整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

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

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中,可以直接操作web.config

如下图:

代码:

    <system.webServer>        <rewrite>            <rules>                <rule name="test" stopProcessing="true">                    <match url="shop/(.*).aspx" />                    <action type="Redirect" url="/shop/{R:1}" />                    <conditions>                    </conditions>                </rule>            </rules>        </rewrite>    </system.webServer>

动态跳转实例

那如果要加动态页面怎么办???莫慌,莫慌,看下图:原链接:http://en.amusechina.cn/en/ProductDetail-2.0.aspx?proId=1159&cateId=99现链接:http://en.amusechina.cn/product1159/99.html

三个实例

1、http重定向至https

填写内容 ->

名称:随意

模式:(.*) ;代表全部,任意,无论是否字符都匹配

条件:{HTTPS};https,模式^OFF$,代表https关闭,也就是没有;;;{HTTP_HOST}:填写要匹配的域名,不能其他的域名访问到也重定向至这个https,逻辑分组全部匹配,任意匹配是满足一个条件即可进行下面处理

操作类型:重定向

重定向URL:https://www.example.com/{R:1}

结果相当于 访问 http://www.example.com/……. 重定向至 https://www.example.com/…….

2、重写服务,一般使用为nodejs服务需要实现路径转为根节点访问,这里不写条件,一般条件使用为上面的两种,这里为了截图方便,不予展示

模式:^blog/(.*)

类型:重写

目标URL:http://127.0.0.1:3001/{R:1}

结果:访问:http://www.example.com/blog/index.html —> http://127.0.0.1:3001/inde.html

当然这个127.0.0.1指的是服务器的本地,而不是访问者电脑本地,这样使用,可以防止开发太多端口,引起安全问题

3、重写服务-文件

模式:(.*)phpf$:代表访问的文件以phpf结尾

类型:重写

目标URL:http://www.example.com/{R:1}.php

结果:访问:http://www.example.com/dir/loginphpf —> http://www.example.com/dir/login.php

这样当后端有其他语言或者不想在前端显示文件后缀时,可以使用这种方式来进行隐藏,phpf可以自己随意更改

了需求我们再来说下需要准备的工具和环境:

  • URL ReWrite工具,下载地址:https://www.iis.net/downloads/microsoft/url-rewrite
    but,2.1的版本是有bug,我之前被他们坑出翔了。所以有些时候你可能需要2.0的版本。
    2.0从哪里可以下载呢。从Web Platform Installer里面进行安装吧。

操作流程

配置URL分为全局和非全局,下图,可以看到URL重写组件内容。


选择某一个站点中的URL重写,我们称之为单独的非全局。
直接选择IIS的可以配置全局,所以这里要依靠你自己的判断和选择。

打开Url重写工具

在右侧点击添加,然后选择空白规则,然后进行规则的配置。

规则命令如下

这个也是网上一大堆教程最神的地方,很多东西都是缺失的,后者不把代码贴出来的。。

名称:Redirect To HTTPS(这个名字你可以自己改)
模式: (.*) 然后勾选忽略大小写

条件中的逻辑分组处理

首先参考上图中的逻辑分组信息。

输入类型 模式 是否忽略大小写 备注

{HTTPS}与模式匹配^OFF$ YES 此项用来匹配你的请求是HTTPS还是HTTP

{HTTPS_HOST}与模式不匹配^(localhost) YES 如果你是本地的localhost不会重定向到SSL

这个也是网上一堆复制粘贴不写清楚的地方。

操作重定向

在操作属性中,重定向的URL:https://{HTTP_HOST}/{R:1} ,然后选中 附加查询字符串以及重定向类型为参阅其他(303 )即可。

总结

其实这些都不难,但是网上很多人写资料,写的不清晰也不检查,导致问了不少问题。

最终效果

原文链接:https://www.cnblogs.com/wer-ltm/p/10190535.html

RL REWRITE,翻译过来就是URL重写,或者URL重定义。在asp+iis的网站开发模式中,可以实现如将http://xxxxxx.cn/news.asp?id=220 变成http://xxxxxx.cn/220.html 的形式。例如某条新闻的实际网址是http://xxxxxx.cn/news.asp?id=220 ,通过URL重写之后,我们就可以直接输入 http://xxxxxx.cn/220.html 的网址,来访问这条新闻

对于iis服务器,要实现此项功能,需从 http://www.helicontech.com/download/ 网站上,下载Lite Version (free)免费版的软件,将此软件安装于服务器之后,在其安装目录上,找到配置文件httpd.ini,用记事本打开,输入相应的规则。然后,在相应的站点上,ISAPI中,添加此组件,配置完成,功能生效。

2、URL_REWRITE的规则写法参考:
当我需要将news.asp?id=234映射成news/234.html时,只需设置:
RewriteRule /news/(\d+)\.html /news\.asp\?id=[N,I]

这样就把 /news/234.html 这样的请求映射成了 /news.asp?id=234
当有对/news/234.html的请求时:web服务器会把实际请求转发给/news.asp?id=234

比对于某一个简单应用可以是:
RewriteRule /news/(\d+)\.html /news/news\.php\?id=[N,I]
这样就把 http://www.xxxxxx.com/news/234.html

映射到了 http://www.xxxxxx.com/news/news.php?id=234

一个更通用的能够将所有的动态页面进行参数映射的表达式是:
把 http://www.xxxxxx.cn/foo.php?a=A&b=B&c=C
表现成 http://www.xxxxxx.cn/foo.php/a/A/b/B/c/C

RewriteRule (.*?\.php)(\?[^/]*)?/([^/]*)/([^/]*)(.+?)? (?2&:\?)=?5: [N,I]

3、使用URL重写功能的好处:
首先,有助于增加网站的安全性,因为它隐藏了诸如asp php jsp等相关的服务器技术,以最原始的html文件形式,呈现于客户。

其次,在平台移植时,不会影响各页面的浏览。如将news.asp?id=123转移news.php?id=123,即将asp平台转移php,如使用此URL重写,这个页面的网址就是news/123.html。

其它方面,方便URL引用,有助于搜索引擎的枚举。

注意服务器上不要乱设置