为 301 重定向配置 Amazon 重定向规则

Posted

技术标签:

【中文标题】为 301 重定向配置 Amazon 重定向规则【英文标题】:Configure Amazon Redirect Rules for 301 Redirect 【发布时间】:2013-10-03 21:11:22 【问题描述】:

我的计划是使用单个 Amazon Bucket 进行从 www 域到非 www 的 301 重定向。域。

我希望能够将任何 URL 指向它,并让它不仅在该域上执行重定向,而且还保持定向路径:

www.site.com/test -> site.com/test

重定向规则可以在这里找到: http://docs.aws.amazon.com/AmazonS3/latest/dev/HowDoIWebsiteConfiguration.html

这是一般设置的样子:

RoutingRules> =
    <RoutingRules>
         <RoutingRule>...</RoutingRule>
         [<RoutingRule>...</RoutingRule>   
         ...]
    </RoutingRules>

<RoutingRule> =
   <RoutingRule>
      [ <Condition>...</Condition> ]
      <Redirect>...</Redirect>
   </RoutingRule>

<Condition> =
   <Condition> 
      [ <KeyPrefixEquals>...</KeyPrefixEquals> ]
      [ <HttpErrorCodeReturnedEquals>...</HttpErrorCodeReturnedEquals> ]
   </Condition>
    Note: <Condition> must has at least one child element.

<Redirect> =
   <Redirect> 
      [ <HostName>...</HostName> ]
      [ <Protocol>...</Protocol> ]
      [ <ReplaceKeyPrefixWith>...</ReplaceKeyPrefixWith>  ]
      [ <ReplaceKeyWith>...</ReplaceKeyWith> ]
      [ <HttpRedirectCode>...</HttpRedirectCode> ]
   </Redirect>
    Note: <Redirect> must has at least one child element. 
           Also, you can have either ReplaceKeyPrefix with or ReplaceKeyWith, 
           but not both.

我会将我的 www CNAME 指向此存储桶。我的问题是,鉴于亚马逊为我们提供的桶重定向控制,这可能吗?

【问题讨论】:

【参考方案1】:

您不能使用单个存储桶并将多个域指向它。使用 S3,一个自定义域 = 一个唯一存储桶,因为存储桶的名称必须与您要使用的自定义 CNAME 匹配。

【讨论】:

【参考方案2】:

@dcro 准确指出,严格来说,每个存储桶只有一个域名,因为存储桶名称必须与域名完全匹配。

如果您在该约束内操作,那么将每个请求重定向到不同主机上的同一路径很简单......您只需选择“将所有请求重定向到另一个主机名”(在控制台中,如页面上所述你链接到),这就是 S3 所做的,不需要规则配置。

每个请求都被重定向到指定主机、查询字符串和所有的完全相同的路径。来自我的一个存储桶的实际请求,主机名已清理,但路径 /foo/bar 在实际请求中,并保留在 Location: 标头中:

$ wget --server-response original.example.com/foo/bar -O -
--2013-09-27 17:47:16--  http://original.example.com/foo/bar
Resolving original.example.com (original.example.com)... x.x.x.x
Connecting to original.example.com (original.example.com)|x.x.x.x|:80... connected.
HTTP request sent, awaiting response...
  HTTP/1.1 301 Moved Permanently
  x-amz-id-2: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  x-amz-request-id: xxxxxxxxxxxxxxxx
  Date: Fri, 27 Sep 2013 21:47:18 GMT
  Location: http://target.example.com/foo/bar
  Content-Length: 0
  Server: AmazonS3

【讨论】:

以上是关于为 301 重定向配置 Amazon 重定向规则的主要内容,如果未能解决你的问题,请参考以下文章

301 重写/重定向规则导致 500 内部服务器错误

高分求301重定向的htaccess规则写法

301 重定向规则在不同的托管环境下给出不同的结果

Apache环境中重定向301的配置

ngin配置301重定向设置方法和nginx子目录301重定向

当url具有相同的基础时如何编写301重定向规则