码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 前端项目通过‘URL 重写’部署在 IIS 中,访问 WebAPI 接口


    阅读目录

    • 〇、前言
    • 一、安装‘URL重写’功能模块
    • 二、通过‘URL重写’配置入站规则
    • 三、报错处理:HTTP 400.605
    • 四、部署完成后刷新页面时出现 404
    • 五、项目主页莫名变成加载 index.html 文件的内容

    回到顶部

    〇、前言

    在前端项目开发时,我们可以通过配置代理 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 代码填入并保存。

    <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前端框架开发的应用

    回到顶部

    五、项目主页莫名变成加载 index.html 文件的内容

    其中一个原因就是:在“HTTP 响应头”中加了这个配置:content-type : application/json。

    解决:删除此项,即可恢复。

      

  • 相关阅读:
    四元数、罗德里格斯公式、欧拉角、旋转矩阵推导和资料
    mysql-面试50题-2
    【开源】基于Vue.js的高校实验室管理系统的设计和实现
    攻防世界 简单的base编码
    C++基础知识
    如何获取standard cell各端口的作用
    高级深入--day30
    文件系统(六):一文看懂linux ext4文件系统工作原理
    交叉验证太重要了!
    Vue3 - Pinia 状态管理(环境搭建安装及各属性使用教程)详细使用教程
  • 原文地址:https://www.cnblogs.com/czzj/p/16916055.html
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号