我正在研究我在S3中部署的ember-cli应用程序。我真的希望能够使用这种“无服务器”方法,因为它配置起来非常简单,而且非常实惠。
我的网址存在问题。如果我点击http://my-bucket.s3-website-us-east-1.amazonaws.com/它就可以了。但是如果我尝试直接加载除应用程序根目录之外的页面,例如http://my-bucket.s3-website-us-east-1.amazonaws.com/elephants/5,那么它会给出403,因为S3中没有这样的资源。 (我可以通过应用程序很好地导航到这些页面,我可以在我的机器上以开发模式直接命中它们,因此ember应用程序工作正常。)
在寻找解决方案时,我找到suggestions将#!
添加到我的路径中。这似乎更好,因为它不返回403,但是当我点击http://my-bucket.s3-website-us-east-1.amazonaws.com/#!/elephants/5时,它只是重定向到http://my-bucket.s3-website-us-east-1.amazonaws.com,丢失了路径所包含的任何特定信息。
我有什么选择?有没有办法使用S3并有工作的URL?我需要服务器吗?还是有另一种方法让我望而却步?
答案 0 :(得分:6)
只有基于#的重定向方法几乎没有问题。我在下面列出了它们:
Ember-CLI-Deploy倡导的Lightening部署方法突变的方法如下:
5.对于SEO需求+确保您的index.html没有缓存,请执行以下操作:
我可以提供有关nginx设置的更多详细信息,只需留言即可。已经很难学会了。
云端分发更新后。使您的云端缓存无效一次,使其处于原始模式。 点击浏览器中的网址,一切都很好。
答案 1 :(得分:4)
http://my-bucket.s3-website-us-east-1.amazonaws.com/#/elephants/5
我曾尝试过各种方法,但其中没有一种方法恰好是#
而没有!
,并被/
包围。相关阅读是关于location
值得注意的是我正在使用:
App.Router.reopen({
location: 'auto'
});
此外,我在静态网站托管下使用以下RoutingRules
<RoutingRules>
<RoutingRule>
<Condition>
<HttpErrorCodeReturnedEquals>403</HttpErrorCodeReturnedEquals>
</Condition>
<Redirect>
<HostName>my-bucket.s3-website-us-east-1.amazonaws.com</HostName>
<ReplaceKeyPrefixWith>#/</ReplaceKeyPrefixWith>
</Redirect>
</RoutingRule>
</RoutingRules>
答案 2 :(得分:2)
只需将错误文档映射到index.html&amp;您的locationType应设置为auto。 http://i.stack.imgur.com/qbAov.png