我的用例是带有深层链接的静态天蓝色网站。我希望我的azure网站在调用某些URL时返回index.html页面。 / t / 2
在使用ASP.NET为应用程序提供服务时,可以通过将以下内容添加到Route中来实现此目的
routes.MapRoute(
name: "DeepLink",
url: "t/{*id}",
defaults: new { controller = "Home", action = "Index" }
);
我想通过静态站点实现相同的目标。我可以添加一个Web.config,该文件可用于重定向/重写我的URL,但我希望该URL保持为/ t / 2,以便前端可以对此做出反应。
答案 0 :(得分:1)
遇到了同样的问题,偶然发现了这个线程-
由于静态网站只知道主要路线,因此不知道任何路线-对于任何基础路线,它将始终默认为未找到。
但是在SPA中,您没有静态的404文档,您的index.html将为您处理该文档。
因此,您唯一需要做的就是将index.html也指定为404文档,一切似乎都可以正常工作。
答案 1 :(得分:1)
使用404页面作为后备并不是路由链接的最佳方法。
您可以使用{。{3}}中所述的route.json文件。
如果需要,可以使用通配符。您的routes.json文件将如下所示:
{
"route": "/t/2",
"serve": "/index.html",
}
答案 2 :(得分:0)
如果您使用的是静态Web应用程序,则您无权访问任何服务器端代码来进行路由,则需要在所有客户端上进行。您将需要使用支持此功能的Javascript库或类似程序。
答案 3 :(得分:0)
如果您是在静态网站上指的是Azure Storage web sites,则可以指定一个自定义的404 html,该html可以提供一个小的JavaScript代码段,该代码段重定向回index.html(如Sam所指出的那样)。
如果静态网站位于Azure App Service中,则可以在web.config中添加此代码段:
<system.webServer>
<rewrite>
<rules>
<rule name="Main Rule" stopProcessing="true">
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="/" />
</rule>
</rules>
</rewrite>
</system.webServer>