IIS URL 重写规则

2024-02-20

我有一个 AngularJS 应用程序,它利用 URL 重写进行链接。我的重写规则如下:

<rewrite>
<rules> 
  <rule name="MainRule" stopProcessing="true">
    <match url=".*" />
    <conditions logicalGrouping="MatchAll">
      <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
      <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
      <add input="{REQUEST_FILENAME}" matchType="Pattern" pattern="^api/(.*)" negate="false" />
    </conditions>
    <action type="Rewrite" url="Default.cshtml" />
  </rule>
</rules>

我在SO上找到了这个解决方案:如何配置 IIS 以在 HTML5 模式下 URL 重写 AngularJS 应用程序? https://stackoverflow.com/questions/12614072/how-do-i-configure-iis-for-url-rewriting-an-angularjs-application-in-html5-mode并进行了一项修改以允许我的 API 通过。

本质上,我想将我的所有请求重定向到Default.cshtml除了调用我的 Web API。当我在基本 URL 上加载应用程序时,这非常有用,例如:localhost/myapp。但是,如果我在有角度的路线上重新加载页面,例如:localhost/myapp/dashboard它失败了:

<Error><Message>No HTTP resource was found that matches the request URI 'http://localhost/myapp/dashboard'.</Message>
<MessageDetail>No type was found that matches the controller named 'dashboard'.</MessageDetail></Error>

我在我所做的地方有一个工作:

 <rewrite>
  <rules>
    <rule name="Default" stopProcessing="true">
      <match url="^(?!lib|api|dist|assets|app/|bower|common|main|signalr|templates|bower_components/).*" />
      <action type="Rewrite" url="Default.cshtml" />
    </rule>
  </rules>
</rewrite>

效果很好。我有什么想法可以利用上面更干净的解决方案并仍然完成重写吗?


我需要改变模式并改变{REQUEST_FILE} to {REQUEST_URI}在几个地方。在这里查看我的演示:

<rewrite>
  <rules>
    <rule name="MainRule" stopProcessing="true">
      <match url=".*" />
      <conditions logicalGrouping="MatchAll">
        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
        <add input="{REQUEST_URI}" matchType="Pattern" pattern="api/(.*)" negate="true" />
        <add input="{REQUEST_URI}" matchType="Pattern" pattern="signalr/(.*)" negate="true" />
      </conditions>
      <action type="Rewrite" url="Default.cshtml" />
    </rule>
  </rules>
</rewrite>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

IIS URL 重写规则 的相关文章

随机推荐

  • Cygwin 中的 .seh_savexmm 寄存器无效

    制作 我曾使用 cygwin 但遇到编译错误 我不确定 seh savexmm 的无效寄存器是什么 请帮我 我在谷歌上搜索了这个问题但没有找到 问题很多 但没有灵魂 请帮我 perl generate functions pl file o
  • 如何在 VSCode 中使用 yapf(或 black)

    我使用以下命令安装了 yapf conda install yapf 并在我的中添加下一行 vscode settings json file python linting pylintEnabled true python linting
  • 使用 Firebase 云功能实现发送电子邮件

    对于我们的网络应用程序 我们目前使用 Firebase 的免费计划 并且需要发送有关各种事件 触发器的电子邮件 问题是 我认为 Mailgun 及其云功能可以完美地完成此任务 但看起来只能将其 API 与 Firebase 的付费计划一起使
  • 无法在 C++20 中将 std::cin 与 char* 或 char[] 一起使用

    It used上班 阅读std cin到动态分配的chararray 或作为参数传入的数组 请参阅下面的 MCVE include
  • 使用 dask 加载大型压缩数据集

    我正在尝试将一个大型压缩数据集加载到 python 中 其结构如下 year zip year month 很多 csv 文件 到目前为止 我已经使用 ZipFile 库迭代每个 CSV 文件并使用 pandas 加载它们 zf ZipFi
  • 加载动画png [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我正在寻找一个透明的动画加载图标 然而 我知道我很懒 我不想自己做 如果这不是这篇文章的正确论坛 请原谅我 我过去在这里运气很好 有谁知道我在哪里可以
  • 将管道/连接作为上下文参数传递给多处理 Pool.apply_async()

    我想使用管道与池中的流程实例进行通信 但出现错误 让 p 成为 Pool 的一个实例 master pipe worker pipe Pipe self p apply async worker task handler info cont
  • JavaScript 全局变量

    我应该如何创建一个变化变量作为全局变量 所以像这样 function globVar variable window variable 因此 通过这种方式 我也可以在自动模式下创建全局变量 而且我也可以更轻松地为自己创建它们 EDIT 例如
  • 尝试向 MYSQL 表添加新列时失去连接

    我正在尝试向拥有超过 2500 万行的 mysql 表添加一列 我正在运行 sql 命令 ALTER TABLE table name ADD COLUMN column name varchar 128 NULL DEFAULT NULL
  • 第三方API的Cors问题

    我很难从浏览器上的第三方 api 获取数据 https www coinexchange io api v1 getmarkets https www coinexchange io api v1 getmarkets I set mode
  • Git:管理我的应用程序的每个版本?

    我正在使用 git 和 github 并且刚刚完成了 iOS 应用程序的 1 0 版本 从这里开始 我想知道 git 如何才能最好地为我服务 我真的只是在这里寻找最佳实践 以及其他人推荐的管理主要版本的方法 我应该为每个新版本 例如 1 1
  • 从 vba 调用 MS SQL Server 标量 UDF

    我正在对连接到 SQL Server 2005 后端的 Access 2007 accdb 而不是 adp 前端进行编程 我怎样才能打电话scalar我的 vba 代码中的用户定义函数 Dim rst As ADODB Recordset
  • Pywinauto:无法将窗口带到前台

    致力于使用 Python 驱动的自动化工具 想象一下有一个正在运行的应用程序池 APPS POOL Chrome SomeApp Foo 该脚本在循环中运行 每秒 并且需要在它们之间随机切换 Init App object app appl
  • 递归推送所有子模块

    我编写了以下脚本来推送工作区中的所有更改 包括子模块和超级项目 然而 听起来有点奇怪 做我想做的事情是如此复杂 我缺少的还有更好的方法吗 bin bash if ne 1 then echo Illegal number of parame
  • 在 XPath 中使用翻译函数会出现错误

    我必须执行不区分大小写的 XML 搜索 我已经编写了运行良好的 XPath 表达式 但是当我使用translateXPath 表达式内的函数我收到错误 下面是运行良好的 XPath 表达式 string upper ABCDEFGHIJKL
  • 控制台中出现错误:无法加载资源:net::ERR_CONNECTION_RESET

    我刷新了我的应用程序页面并在控制台中收到此错误Failed to load resource net ERR CONNECTION RESET 我尝试重新安装 XAMPP 版本 但这对我不起作用 我认为你正在使用铬 问题是证书不匹配或证书过
  • Android 模拟器在 Ubuntu 11.10 上崩溃

    我在 Ubuntu 11 10 32 位 机器上安装了 Android SDK 我还安装了 Eclipse 3 7 和相关的 Android 开发插件 全部在 openjdk6 上 使用 eclipse 我成功创建了一个 Android 虚
  • Swift distance() 方法抛出致命错误:无法增加 endIndex

    我试图在字符串中找到子字符串匹配 并获取匹配的位置 我无法弄清楚以下代码有什么问题 let str1 hello let cmp let searchRange Range start str1 startIndex end str1 en
  • 浏览器中 bash 命令的代码块忽略路径

    我正在尝试开发一种用户友好的方式来设计 bash 命令的代码突出显示样式 我将使用以下示例来澄清问题这一页 https themeaningfulengineer github io Linux kernel in QtCreator 在下
  • IIS URL 重写规则

    我有一个 AngularJS 应用程序 它利用 URL 重写进行链接 我的重写规则如下