Azure SWA如何实现请求路由重定向修改与路径重写需求
你提到的两个需求都可以通过Azure Static Web Apps的核心配置文件staticwebapp.config.json实现,以下是具体配置方法和示例:
配置逻辑说明
你只需要将staticwebapp.config.json文件放在项目静态资源根目录(和站点入口index.html同级),部署后规则会自动生效,两个需求的对应配置如下:
- 登录跳转需求:通过捕获未认证访问的401状态,自定义重定向的登录地址,将用户原始请求路径作为参数传递给认证端点,Azure SWA原生支持该跳转参数,登录完成后会自动跳回用户原本请求的页面
- 美观URL重写需求:通过路由重写规则,匹配无后缀的美观路径,将请求映射到对应目录下的
index.html文件,地址栏URL不会发生变化,符合使用预期
完整配置示例
{ "routes": [ // 登录跳转规则:所有路径默认需要认证,未认证时跳转到指定登录页并携带原始请求路径 { "route": "/*", "allowedRoles": ["authenticated"], "responseOverrides": { "401": { "redirect": "/.auth/login/<my-auth-provider>?post_login_redirect_uri={{request.fullPath}}", "statusCode": 302 } } }, // 美观URL重写规则:匹配无后缀的路径,重写到对应目录的index.html { "route": "/:prettyPath", "rewrite": "/:prettyPath/index.html", "statusCode": 200 } ], // 可选兜底配置:避免规则未覆盖的异常路径返回404,可根据实际需求调整排除路径 "navigationFallback": { "rewrite": "/index.html", "exclude": ["/assets/*", "*.css", "*.js", "*.png"] } }
注意事项
- 把配置里的
<my-auth-provider>替换为你实际使用的身份提供商标识,比如aad、github等 - 如果部分路径不需要认证,可在上述受保护路由规则前新增优先级更高的匿名访问路由规则,匹配对应路径后设置
"allowedRoles": ["anonymous"]即可 - 多层级的美观URL可以调整重写规则的匹配逻辑,比如
"/:level1/:level2"对应重写为"/:level1/:level2/index.html"
内容的提问来源于stack exchange,提问作者Nate Green
相关产品推荐
相关产品推荐

