iis 在访问没有扩展名的静态文件时阻止Angular运行

lb3vh1jj  于 2023-04-21  发布在  Angular
关注(0)|答案(1)|浏览(165)

我有一个项目的Ionic/Angular PWA,它有一个本地(Ionic Cordova)应用程序以及移动的。在应用程序上,我们需要接受与PWA具有相同URL的深度链接(因此您可以使用相同的链接从PC和移动设备访问)。
对于iOS深度链接(他们称之为“通用链接”),TLD需要在根文件夹或.well-known路径中提供一个名为apple-app-site-association的文件(没有扩展名)。Android也是如此,但需要一个名为assetlinks.json的文件(尽管在这种情况下,这并不是真正必要的,它只是为了遵守一些Android指南)。
问题是,当我试图访问iOS文件时,我的PWA打开并将其作为路由捕获并重定向到主页。对于Android文件,它工作得很好,因为它有一个扩展名,并且Angular(或托管服务器)认识到浏览器想要访问一些静态文件。
我在网上查过这个问题,找不到任何解决办法...
该网站托管在IIS服务器上,我已经尝试了一些设置修复web.config文件,如重写路径到一个相同的文件与.json扩展名和另一个我似乎不记得了。
我也尝试了所有我能想到的src/app-routing.module.ts文件中路由的组合。如果有通配符路由,它将被匹配并重定向到指定的任何地方。如果没有,我得到一个Error: Cannot match any routes. URL Segment: '.well-known/apple-app-site-association'

pxy2qtax

pxy2qtax1#

如果你读过关于通用链接的文章,你会知道这个概念是:您的应用的托管站点提供***apple-app-site-association***以将URL连接到您的iOS应用。为静态网站设置此设置很简单。但对于Spa应用,这可能相当困难。例如,使用Angular,通过angular.json配置静态内容很容易。但是,当静态内容没有文件扩展名时,它将不再起作用🤔(转发到Angular路由,这不是你想要的)。
所以,在水疗中心的情况下,你真正需要做的是在你的应用程序前面设置一些额外的基础设施。这个额外的***通用链接***基础设施只是一个最小的网站,使用与你的app-url不同的url访问。
通用链接url是您向用户群推广的内容。访问通用链接网站时,如果用户在移动终端上,则apple-app-site-associations文件将返回到设备并用于打开关联的本机应用。如果用户不在移动设备上,则会打开为通用链接配置的Web应用。
我在这里包括一个简单的说明。这个解释并不打算详尽无遗,而是为您(已经陷入困境)指出正确的方向。图中的用例是通用链接的Firebase实现-动态链接

一些通用链接的好资源:

相关问题