对于我的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重写的当前方法:
然后是上图中在下拉菜单中显示“始终”的选项:
IF选项:
总是
作为数字
CDN来源
客户IP地址
Cookie参数
客户来源
边缘名称
引荐域
请求标题文字
请求标题正则表达式
申请方法
要求方案
网址路径目录
网址路径扩展
网址路径文件名
网址路径字面量
网址路径正则表达式
网址路径通配符
网址查询字面量
网址查询正则表达式
网址查询通配符
最佳答案
您可以将“原始路径”设置为“deploy”,以便从CDN网址中删除“/deploy/”路径。
规则引擎最多可能需要90分钟才能开始工作。确保尝试之前等待了足够长的时间。
添加原始路径后,重写规则应如下所示。
规则1:
如果总是:
功能:URL重写;资料来源:“登录”;目的地:“index.html”
(从下拉列表中,选择与您的端点名称匹配的那个)。