〇、前言

在前端项目开发时,我们可以通过配置代理 proxy 来访问本地或者是远程接口,但是部署后代理就失效了。如果项目部署在 IIS 上,就没法去对应到指定接口,此时就需要 IIS 中的‘URL重写’功能,来对应要访问的目标地址。

本文将简单介绍下‘URL重写’功能模块的安装、配置,以及日常遇到的问题解决方案。

一、安装‘URL重写’功能模块

如下图标,IIS 中是默认不安装的,需要用户手动安装。安装步骤参考以下三步:

  

1/3 首先是检查 IIS 中是否有‘Web 平台安装程序’,图标如下图:(用来确认和安装 ARR)

  

  若没有需要去官网下载安装包,直接安装即可。官网地址: ARRv3_0.exe 下载地址

  安装成功后,需要重新打开 IIS。

2/3 然后打开‘Web 平台安装程序’,输入‘arr’搜索:

  

  搜索结果,默认情况下,ARR 安装完成后,会如下所示,已经安装了 2.5 版本:

  

  如果没有默认安装需要手动安装,先添加,再安装,最后推荐下载自行安装,直接系统安装也是可以的,如果没成功,就多是两次。

  

3/3 最后需要配置下 ARR,如下图中的步骤:最后需勾选 Enable Proxy。

  

此时,再重新打开一下 IIS,即可看到久违的‘URL重写’了。

二、通过‘URL重写’配置入站规则

注意:需要点选 IIS 主目录,来配置‘URL重写’。

添加规则->空白规则,如下:

  

编辑对应的值:

  

  正则表达式:^(.*?)apitest/(.*)$

    可以通过‘测试模式’功能,来测试正则表达式是否准确。

  重写地址:http://localhost:55046/api/{R:2}

    {R:2} 代表匹配成功的字符串后边的全部内容,并允许附加查询字符串。

  举个栗子:

    若请求地址为:http://xxxxxxx:1001/apitest/testcontrallor/testmethod?para=10

    经重写后的地址:http://localhost:55046/api/testcontrallor/testmethod?para=10

三、报错处理:HTTP 400.605

根据错误页面的提示信息,可以看出是 ARR(ApplicationRequestRouting) 模块的报错。

  

其中一个原因就是,入站规则配置有问题,导致请求无限循环,比如规则是拦截‘/api/’,重写地址中也包含了‘/api/’就会引起无限循环,导致请求无法命中。

四、部署完成后刷新页面时出现 404

在根目录下添加文件 web.config,并将如下 HTML 代码填入并保存。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="CHRoutes" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="/index.html" />
</rule>
</rules>
</rewrite>
<handlers>
<add name="SSL-html" path="*.html" verb="*" modules="ServerSideIncludeModule" resourceType="File" />
</handlers>
</system.webServer>
</configuration>

注:如果有问题欢迎留言讨论,众人拾柴火焰高。

部分参考:前后端分离-IIS部署Vue前端项目

    在IIS和Nginx上通过代理部署基于ant-design-pro前端框架开发的应用

最新文章

  1. jdk8中java.util.concurrent包分析
  2. java面向对象(封装-继承-多态)
  3. go语言之并发
  4. C#集合类型
  5. 【leetcode❤python】169. Majority Element
  6. Linux+mysql+apache+php+wordpress搭建个人空间
  7. 设置WinForm窗体及程序图标
  8. applicationContext.xml详解 spring+mybatis+struts
  9. 安装pandas报错(AttributeError: &#39;module&#39; object has no attribute &#39;main&#39;)
  10. 【转帖】理解 Linux 的虚拟内存
  11. WIN7 环境下搭建 PHP7(64 位)操作步骤
  12. Android基础之6.0系统以上的权限分配
  13. C# 与 SQL Server 的数据类型对应关系
  14. (转)EOSIO开发(三)钱包、账户与账户权限之概念篇
  15. super的使用方法与使用范围
  16. 爬虫--Scrapy-参数等级和请求传参
  17. 【连接】Spring事物的传播行为
  18. Tencent Server Web(TSW) 腾讯开源的nodejs 基础设施
  19. (高级篇)jQuery学习之jQuery Ajax用法详解
  20. 6.可见性关键字(volidate)

热门文章

  1. Windows安装Jenkins详细教程(图文教程)
  2. 四、frp内网穿透服务端frps.ini各配置参数详解
  3. parted创建磁盘分区并创建LVM(Linux合并多块大于2T的磁盘并合并到一个分区)
  4. Beats:通过Metricbeat实现外部对Elastic Stack的监控
  5. 12. Fluentd部署:多Workers进程模式
  6. 银河麒麟安装node,mysql,forever环境
  7. LeetCode - 数组的改变和移动
  8. 自然语言处理NLP程序包(NLTK/spaCy)使用总结
  9. POJ1985 Cow Marathon (树的直径)
  10. ArrayList LinkedList Vector之间的区别