我正在使用AWS Amplify,并且无法弄清楚如何配置我的重写和重定向或route.js,以防止尾部斜杠破坏我的功能。
当我在本地运行代码并尝试访问localhost:3000/foo/bar/id
时,页面呈现良好。当我通过放大部署相同的代码,并且用户单击带有href的按钮时,浏览器将获得一个302
并将用户重定向到example.com/foo/bar/id/
,然后由于该页面不存在,默认的Amplify重定向会将其发送到[ C0]和index.html
我已经尝试在我的反应路线中添加以下内容:
404
以及AWS Amplify控制台中的以下重定向规则:
/foo/bar/:id
/foo/bar/:id/
但没有任何作用。我在这里迷失了方向,有什么建议吗?
Amplify添加了一个斜杠以防止类似/foo/bar/<id> | /foo/bar/<id> | 302
/foo/bar/<id>/ | /foo/bar/<id> | 302
的网址,但这可能不是真正的原因。您的应用/浏览器正在使用服务器端不存在的路由向服务器发出请求(您使用的是严格位于客户端的SPA路由)。尝试在amplify js控制台中添加以下重定向规则(在“应用程序设置”下:“重定向和重写”>“编辑”>“打开文本编辑器”):
/about.html
这会将所有文件重写到[
{
"source": "</^[^.]+$|\\.(?!(css|gif|ico|jpg|js|png|txt|svg|woff|ttf|map|json)$)([^.]+$)/>",
"target": "/",
"status": "200",
"condition": null
}
]
,这是服务器端存在的唯一路由。有关更多信息,请签出/index.html
和Trailing Slashes上的文档。