IIS进行URL重写——实现https重定向,文件类型隐藏访问重写,nodejs等服务重写等等

一、Why?

1、先来讲一讲为什么我们要使用url重写这个东西

2、因为我学习的后端是nodejs,然后我发现nodejs一个非常让人难受的事,就是它监听端口不是80和443时,你访问网页需要输入端口,这样很不友好,比如下面这样:

3、这样对用户很不友好,所以我才打算学一学url重写,url重写后就会变成这样:

4、当然上面的url中的3001也可以修改成其他字母或者多层路径,这样就会变得好看多了

二、前置条件

  1、首先你得有个IIs服务器  ( ̄▽ ̄)/

2、先去IIS官网下载web平台安装工具

3、当然是安装这个工具了٩(๑❛ᴗ❛๑)۶

4、打开这个工具

5、搜索Application Request Routing Cache,或者 应用程序请求路由 ,因为有可能是英文也有可能是中午,所以当一个搜索不到时,搜索另一个语言,一定要在产品全部中搜索

6、安装后可以一路点击接受安装即可

7、接下来安装url重写工具,直接搜索url即可,,有可能出现 url 重写工具 或者 url rewrite 

8、和上面安装请求路由一样,也可以和请求路由一起添加进去,一起安装

9、安装完成,我们前置工作也就成功了

三、应用程序请求路由设置

1、打开IIS工具,选择上面安装的请求路由

2、选择 Server Proxy Settings

3、在中间区域,选择勾选Enable proxy,不用修改内容,当然也可以根据需求自己修改

4、点击应用即可,完成请求路由的设置

四、url重写设置:这边讲解参数,后面有三个写好的例子使用

1、打开站点,选择需要url重写的站点

2、当安装完成url重写时,会出现url重写这个工具,选择工具,名字也有可能是英文

3、打开工具,选在右侧栏第一行添加规则,打开对话框,选择空白规则

4、输入名称,随意,但是尽量能表示出重写目标的含义

5、匹配url,请求的url(字面意思):与模式匹配(推荐),与模式不匹配;使用(匹配使用的方式):正则表达式(推荐),通配符,完全匹配;

6、模式:比如说host代表主机域名,则在这里面写的就是host之后的正则匹配表达式,比如匹配在host/blog/,之下的都转到nodejs搭建的服务上,则这里填写^blog/(.*);点击测试模式,我们填写下面图片内容进行测试,发现测试结果中有个{R:1},我们需要将其导向至nodejs搭建的服务,也就是重写目标

7、忽略大小写,自然就是字面意思,不多叙述

8、下面便是条件,按照图片来进行填写,这里不具体细数条件类型和规则模式填写,后面有三个例子进行了基本讲述,其余的请查看官方文档

9、服务器变量可以不写,操作类型可以因情况而定,http站点转向https时一般使用重定向,其余一般为重定向

重写URL:比如博客是在nodejs搭建的服务上,并且监听本地3001端口时,填写http://127.0.0.1:3001/{R:1},这个{R:1}就是上面模式匹配的字符串,其实访问www.example.com/blog/index.html,就是相当于访问http://127.0.0.1:3001/index.html,这样监听本地3001,不用开方公网3001,可以减少服务器危险

停止后续规则,自然就是字面意思,一旦勾选后,匹配处理结束,将不再处理下面的其他规则

10、点击右侧栏应用即可,当应用显示灰色时,证明有必填项没有填写,所以无法应用,到这里也就重写完毕,下面是例子

五、例子

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可以自己随意更改

六、尾记

1、本文记录目的只是为了防止遗忘

2、当然url重写不可能这么简单的使用,我只是需求多少,研究多少,这里只是基本使用,想要更复杂的,则自己可以去官方文档查看,研究

3、本博客可以随意转载,但是请在博文顶部写上来源:

作者:SpiritLing  地址:https://www.cnblogs.com/spirit-ling/p/8809039.html

 Tips:我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=26fheluxu6isc

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏容器云生态

企业网站架构之Nginx+tomcat+memcached集群

nginx+tomcat+memcached应用 系统环境:RHEL6.4  x64   iptables -F   and selinux is disab...

32180
来自专栏张首富-小白的成长历程

Rsync小规模备份

某公司里有一台web服务器,里面的数据很重要,但是如果硬盘坏了,数据就会丢失,现在领导要求你把数据在其他机器上做一个周期性定时备份。要求如下:

15120
来自专栏aoho求索

基于redis的分布式锁实现

关于分布式锁 很久之前有讲过并发编程中的锁并发编程的锁机制:synchronized和lock。在单进程的系统中,当存在多个线程可以同时改变某个变量时,就需要...

47280
来自专栏用户2442861的专栏

深入讲解GCC和Make的区别(有涉及makefile文件哟!!!)

gcc是编译器 而make不是 make是依赖于Makefile来编译多个源文件的工具 在Makefile里同样是用gcc(或者别的编译器)来编译程序.

1.6K30
来自专栏张戈的专栏

启用WP Super Cache纯代码版本之后的一些优化措施

张戈博客在上个月 28 号启用了 WP Super Cache 代码版,几天下来,虽然小问题不断,但是总体感觉非常不错!不管是前台还是后台,速度都有质的提升,着...

37570
来自专栏机器学习算法与Python学习

Python:爬虫系列笔记(3) -- urllib库的高级用法

1.设置Headers 有些网站不会同意程序直接用上面的方式进行访问,如果识别有问题,那么站点根本不会响应,所以为了完全模拟浏览器的工作,我们需要设置一些Hea...

40870
来自专栏北京马哥教育

注意!Python中的10个常见安全漏洞及修复方法

编写安全的代码很困难,当你学习一门编程语言、一个模块或框架时,你会学习其使用方法。在考虑安全性时,你需要考虑如何避免代码被滥用,Python也不例外,即使在标准...

15000
来自专栏木头编程 - moTzxx

CentOS7 ab压力测试安装与解释

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011415782/article/de...

31020
来自专栏电光石火

js中几种实用的跨域方法原理详解

这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数...

32080
来自专栏IT技术精选文摘

文件句柄与文件描述符

1.概述 在实际工作中会经常遇到一些bug,有些就需要用到文件句柄,文件描述符等概念,比如报错: too many open files, 如果你对相关知识一无...

69670

扫码关注云+社区

领取腾讯云代金券