认IIS是不提供URL重写模块的。请注意,不要将IIS默认的HTTP重定向理解为url重写。
url重写,是要从iis的应用市场下载url重写组件才可以的。
URL重写工具的下载地址: 64位版本 32位版本
比如我样实现访问www.demo.com/1.aspx自动跳到新地址www.demo.com/1
规则设置如下:
如下图:
代码:
<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
填写内容 ->
名称:随意
模式:(.*) ;代表全部,任意,无论是否字符都匹配
条件:{HTTPS};https,模式^OFF$,代表https关闭,也就是没有;;;{HTTP_HOST}:填写要匹配的域名,不能其他的域名访问到也重定向至这个https,逻辑分组全部匹配,任意匹配是满足一个条件即可进行下面处理
操作类型:重定向
重定向URL:https://www.example.com/{R:1}
结果相当于 访问 http://www.example.com/……. 重定向至 https://www.example.com/…….
模式:^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指的是服务器的本地,而不是访问者电脑本地,这样使用,可以防止开发太多端口,引起安全问题
模式:(.*)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分为全局和非全局,下图,可以看到URL重写组件内容。
选择某一个站点中的URL重写,我们称之为单独的非全局。
直接选择IIS的可以配置全局,所以这里要依靠你自己的判断和选择。
在右侧点击添加,然后选择空白规则,然后进行规则的配置。
这个也是网上一大堆教程最神的地方,很多东西都是缺失的,后者不把代码贴出来的。。
名称: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引用,有助于搜索引擎的枚举。
注意服务器上不要乱设置
*请认真填写需求信息,我们会在24小时内与您取得联系。