对于我的Angular应用程序,这是app.routing.ts文件:

const appRoutes: Routes = [
    { path: '', component: LoginComponent },
    { path: 'dashboard', component: DashboardComponent },
    { path: 'application', component: ApplicationComponent },
    { path: 'decision', component: DecisionComponent },
];

export const routing = RouterModule.forRoot(appRoutes);

因此,在我的本地计算机上,当我执行 ng服务时,我可以转到浏览器中的地址栏,然后输入以下地址:

本地主机:4200/仪表板

本地主机:4200/应用程序

而且效果很好。

然后我做:
ng build --base-href /deploy/ --prod

然后将文件从本地计算机上的 dist 文件夹复制到Azure Blob存储。我必须有一个用于文件的Blob容器,该容器称为 deploy 。我最终得到这样的东西:
https://xxyz.blob.core.windows.net/deploy/favicon.ico
https://xxyz.blob.core.windows.net/deploy/index.html
https://xxyz.blob.core.windows.net/deploy/assets/Logo.svg
https://xxyz.blob.core.windows.net/deploy/main.68dbes8ef20.bundle.js
https://xxyz.blob.core.windows.net/deploy/styles.a2b9daa6d36.bundle.css

等等等等,我可以去:
https://xxyz.blob.core.windows.net/deploy/favicon.ico

并看到图标

然后,在Verizon Edgecast CDN上,我可以转到:

https://xxyz.com/deploy/index.html启动我的应用程序并登录。

但是我不想去CDN上的https://xxyz.com/deploy/index.html登录。

我想去

https://xxyz.com/login并在那里登录

另外,我也不能去CDN上的以下位置:

https://xxyz.com/deploy/dashboard

https://xxyz.com/deploy/application

我真正想要的是能够从CDN做到这一点:

https://xxyz.com/login

https://xxyz.com/dashboard

https://xxyz.com/application



https://xxyz.com/应该重定向到登录页面

我使用的是Verizon Premium Edgecast CDN,因此我可以进行URL重写,但是到目前为止,我编写的规则还没有奏效。

我是否在Angular方面缺少任何东西?对Azure CDN或Edgecast的URL重写规则有任何想法吗?

这是我尝试对Edgecast/Azure进行URL重写的当前方法:
angular - 如何使用Edgecast Azure CDN修复Angular 2应用的路由?-LMLPHP

然后是上图中在下拉菜单中显示“始终”的选项:

IF选项:

总是

作为数字

CDN来源

客户IP地址

Cookie参数

客户来源

边缘名称

引荐域

请求标题文字

请求标题正则表达式

申请方法

要求方案

网址路径目录

网址路径扩展

网址路径文件名

网址路径字面量

网址路径正则表达式

网址路径通配符

网址查询字面量

网址查询正则表达式

网址查询通配符

最佳答案

您可以将“原始路径”设置为“deploy”,以便从CDN网址中删除“/deploy/”路径。

angular - 如何使用Edgecast Azure CDN修复Angular 2应用的路由?-LMLPHP

规则引擎最多可能需要90分钟才能开始工作。确保尝试之前等待了足够长的时间。

添加原始路径后,重写规则应如下所示。
规则1:
如果总是:
功能:URL重写;资料来源:“登录”;目的地:“index.html”
(从下拉列表中,选择与您的端点名称匹配的那个)。

10-08 09:05