提问人:Miquel 提问时间:11/2/2023 更新时间:11/3/2023 访问量:40
IIS 重写 url 中的哈希 (#)
IIS Rewrite hash(#) in url
问:
我正在使用一个使用 .NET 作为后端和 ReactJS 作为前端框架的应用程序。目前,我们想从 React Hash Router 迁移到 React Browser Router。变化进行得很顺利。我们面临的唯一问题是,我们无法编写成功的IIS重写规则,将带有“#”的URL重定向到没有哈希的URL。
有没有办法使用IIS重定向来更改: https://sampleApp/#/category/3/id/45255 到: https://sampleApp/category/3/id/45255
我们已经尝试了该规则和一些变体。
<rule name="HashRemoval" stopProcessing="true">
<match url="(.*)#(.*)" />
<action type="Redirect" url="{R:1}{R:2}" redirectType="Permanent" />
</rule>
答:
0赞
Jalpa Panchal
11/3/2023
#1
在 IIS 中,URL 重写模块本身不会处理 URL 的定位部分,因为此部分是在客户端处理的,而不是作为 HTTP 请求的一部分发送到服务器。请求不会到达服务器,因此 IIS URL 重写规则无法与之匹配,因为它永远不会在服务器端的传入请求中看到。
因此,如果您在客户端执行重定向,那将是 batter。
if (window.location.hash) {
const newLocation = window.location.href.replace(/#/, '');
window.location.replace(newLocation);
}
下面是 iis url 重写路由器规则:
<rule name="ReactAppRoutes" 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>
评论
#