我有一个Vue.js应用程序,并与Amazon S3和Cloudflare一起运行。
当我打开索引并浏览到/ dashboard时,一切正常。但是,当我直接在新标签页中打开仪表板之类的路线或刷新页面时,我从S3返回以下错误:
404 Not Found
Code: NoSuchKey
Message: The specified key does not exist.
Key: unternehmen
RequestId: 6514F8A1F4C29235
HostId: +BVrPLJSGdzSYogzWZ4GMBXkgkdSJWRVJVhcSs4EI/lmMUR422aCtCxpBGU6AMe5VkS1UbEn/Lc=
只需阅读一下问题就是Vue.js历史记录模式:https ://router.vuejs.org/de/essentials/history-mode.html
我想用Amazon S3存储桶中的路由规则解决问题。Apache RewriteRule如何查找S3?
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]
</IfModule>
尝试了以下操作,但不起作用:
<RoutingRules>
<RoutingRule>
<Condition>
<HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals>
</Condition>
<Redirect>
<HostName>domain.com</HostName>
<ReplaceKeyWith>index.html</ReplaceKeyWith>
</Redirect>
</RoutingRule>
</RoutingRules>
如果我那样做,我只会渲染我的页眉和页脚,仅此而已。
谢谢!
如果您在AWS S3上使用静态托管,并且这是SPA应用程序(React,Vue,Angular等),则应将index.html设置为错误页面: