2016-08-01 182 views
1

我有一个托管在S3上的静态展示网站,并使用CloudFront,以及一个在OVH服务器上托管的网上商店(Prestashop)和博客(Wordpress)。使用Cloudfront将S3子文件夹重定向到另一个域

我要让我的静态网站的两个子文件夹的隐藏重定向,它就像我的3个网站都在同一台主机上,使用以下模式:

  • mysite.com/ - >正常行为
  • mysite.com/blog/ - > myblog.com/
  • mysite.com/store/ - > mystore.com/

当然,我需要每一个请求进行处理是最终会有类似的东西在:

mysite.com/store /fr/1-myproduct.html

回报什么

mystore.com /fr/1-myproduct.html

将有回。

这似乎非常棘手,因为我没有找到真正的解决方案来解决我的问题,在这一点上,我怀疑甚至有可能做这样的事情。 我曾考虑过使用代理,但不会像使用大锤来摆脱苍蝇?

...我已经寻找任何可能的重定向和我才能够找到子域/域名重定向...

所以我的问题是“我怎样才能做到这一点?” 但现在我想知道“能做到吗?”


P.S:这是我的第一篇文章曾经,我已经习惯了,在发布前搜索了很久,我总是最后找到一个解决办法,除了现在。任何建议都是值得欢迎的。

+0

我不认为你可以完全没有反向代理你想要的。但你可以管理A记录转发到正确的服务器,你可以有store.mysite.com和blog.mysite.com转发到ovh服务器 –

+0

@FrédéricHenri是的,这就是我想要做的,这实际上是可行的,但我的利益相关者绝对需要它在子目录中 - 就像SEO目的一样。不过谢谢你的回答,我会检查一下代理,因为这是我最后的希望(多么戏剧化)。 –

回答

5

我查一下有关代理,因为这是我最后的希望

等待。

我有一个静态展示的网站托管在S3和使用CloudFront的

CloudFront的是一个反向代理

根据您与其他两个站点的灵活性,CloudFront可能会将您带到您想去的地方,并将多个独立站点合并到一个主机名下。

这是通过为您的发行版创建额外的原始服务器,然后创建额外的缓存行为以及与其他路径匹配的路径模式完成的,例如/blog/blog/*,这些路径模式将请求发送到替代原点。

但是,有一个问题。 CloudFront无法删除匹配的模式,因此匹配模式/blog/*的mainsite.example.com/blog/hello-world将转发到blog.example.com/blog/hello-world - 而不是blog.example.com。 /你好,世界。 ¹这需要对其他站点进行更改才能以这种方式进行集成。

除非......

如果你已经有了独特的路径模式,没有问题,但如果额外网站的内容是在每一个人网站的根,你看这个问题,在这里。不是不可疑的,但仍然是一个问题。

您唯一的选择将是 的反向代理 CloudFront重写这些路径并将请求发送到备用服务器。真正不是什么大不了的事情,因为HAProxy,Nginx和Varnish都提供这样的功能,并且可以在令人惊讶的小硬件上处理大量的代理请求。

最近(2017)发布的[email protected]服务允许您在需要时处理请求时随时重写路径。

但底线是,你还没有找到一个真正的解决方案,而不是代理的原因是,没有其他选择 - 给定主机名的每个路径必须在一个合理的地方处理 - 一组或更多相同配置的端点。就CloudFront而言,逻辑位置在物理上是全球分布的。


¹ CloudFront的,本机,实际上可以预先考虑到路径上转发所述请求之前,所以对于mainsite.example.com/bar/fizz请求可以被转发到foosite.example.com/foo/bar/fizz通过在配置原点时将原点路径设置为/foo。但是它不能删除路径部分,也不能在不使用Lambda @ Edge的情况下修改路径。在上面讨论的场景中,当配置其他原始服务器时,您会将原始路径保留为空白。

+1

相当有趣这给了云端的好用例 –

+0

好吧,我正在记录如何做到这一点,谢谢启发我,实际上我开始在部署后在网站上工作,所以我没有看到Cloudfront这样(我认为这只是一个“网站cacher”)。 但是,在我设置了一个原始域(myblog.com)和一个行为(/ blog/*将所有内容重定向到自定义原点myblog.com)之后,我仍然收到404错误,它使用我的javascript重定向我。 重定向是否有可能被错误覆盖? –

+0

回答我以前的评论: 是的! 如果您将Cloudfront发行版的404错误配置为重定向,则任何404错误(无论是在远程原点还是基本原点)都将重定向到您设置的相同链接。 我试过用索引。html文件在myblog.com/blog中,没有它。 有了它,它可以正确显示内容,没有它可以回到我在我的基本原点上设置的404页面,因此覆盖wordpress'404页面。 –

相关问题