amazon-web-services - Lighthouse 不再使用网站 - 错误 404
问题描述
我有一个使用 SSL 托管在 AWS(使用 CloudFront 的 S3)上的网站。当我通过 Chrome 执行 Lighthouse 测试时,该测试不适用于除主页之外的任何页面。它针对除性能之外的所有测试返回问号并返回以下错误:
存在影响 Lighthouse 运行的问题: Lighthouse 无法可靠地加载您请求的页面。确保您正在测试正确的 URL,并且服务器正确响应所有请求。状态码:404。”
这是一个 ReactJS SPA 网站,Lighthouse 确实通过调试工作,但当我尝试 URL 中的 S3 或 cloudfront 域或我购买的实际域时不起作用。它是否可以正常工作我不能 100% 确定,因为我可能只在主页上尝试过它并假设它适用于所有页面。
任何人都可以建议我可以尝试的任何明显的事情(解决或给我更多分析)?我对 AWS 和 React 还很陌生。除此以外,该网站似乎运行良好。
非常感谢 :)
解决方案
终于把这个整理好了。这是 AWS S3 和 CloudFront 处理错误的方式的问题。由于托管在 AWS 上的 React 网站不会链接到存储桶中保存的实际文件(例如 www.example.com/testpage,它会尝试路由到 testpage),因此会出错。现在您可以在您的存储桶中设置一个指向 index.html 页面的错误文档,因此如果出现错误,它将重新路由,然后 react 将路由到实际页面。所以,我已经设置了这个,但它仍然失败。我发现您还可以在 CloudFront 中设置一个错误文档,通过添加它,Lighthouse(和 Google Search Console)终于开始工作(通过 CloudFront 并使用我的实际域)。但是,它不能通过 S3 存储桶域工作。不知道为什么不这样做,但这对我来说并不重要,因为它可以正确地路由到我想要的地方。
推荐阅读
- c# - 使用 Channels 进行状态管理
- c# - 无法使用 Linq/lambda 获取相关数据。公共虚拟类未填写
- swiftui - 如何在 SwiftUI 中编写从视图用户获取回调(函数类型)的函数,以便用户可以链接函数调用?
- python - 如果未选择任何内容,则 Python Flask 中的复选框
- jsp - 将数据从一个jsp传递到另一个jsp的安全方式
- mongodb - 不允许使用 updateOne 函数通过 $push 将部分匹配的文档添加到数组中
- laravel - 无法从 Laravel Lumen API 访问 Axios 中返回的错误响应
- scipy - 最优传输代码(Scipy 线性规划优化)需要更长的时间
- python - python setup.py install - 找不到错误提升库文件
- python-2.7 - 在 macos 上的 anaconda 上安装 spaCy