如何将对 root URL 的调用单独重定向到子路径

how to redirect calls to root URL alone to a sub path

我在 iis 中托管了 .net core web api 作为网站,并将 angular app 作为应用程序添加到同一网站。

我的应用程序 url 是 "http://example.com/angularapp" ,现在如果用户尝试使用 url "http://example.com/"然后我希望他们被重定向到“http://example.com/angularapp”。 注意:我的 api url 是这样的 - “http://example.com/api/xyz”,我不希望它受到影响。 URL 重写我在本地环境中尝试过的规则

如果尚未安装,请使用下载 here.

添加 URL 重写模块到 IIS

安装后,select 您在 IIS 中的站点,您应该会看到“URL 重写”作为选项之一:

打开它并单击“添加规则...”并添加一个空白的入站规则。您可以在此处配置重写规则以在您的站点周围自动路由请求。在您的情况下,正则表达式模式 ^http://example.com/$ 会起作用,但是您可能想查看 refining/expanding 您的重写规则以解决诸如自动重定向到 HTTPS、强制尾部斜杠等问题。

设置要重写的操作并将重写 URL 定义为您希望匹配请求指向的位置,在本例中为 http://example.com/angularapp

请注意,上述模式 匹配 http://example.com/,因此您的 API 请求不会受到影响。

注意:模式不会匹配 http 和主机名。你最好先学how to use url rewrite module

我不确定你是否知道如何编辑web.config所以我会展示添加正确规则的 GUI。

它会将 http://example.com/ 重定向到 http://example.com/angularapp。但是,如果 url 是 http://example.com,它不会重定向。我不确定你是否要重定向 http://example.com,所以这只是一个提醒。

这个终于成功了,

正则表达式 $^ 表示“无”,URL 重写不验证 http 和主机名,而是验证 http 和主机名之后的任何内容。所以,在这种情况下,我们只期望“无”。对于这种情况,我们正在重写要附加到 URL.

的应用程序名称