-1

我将 AWS–s3 用于静态网站托管,并通过 Cloudflare 服务(包括 DNS)运行它。截断.htmlURL 名称,同时避免重复内容是 SEO 最佳实践。我使用 nginx 达到了预期的结果,我想知道是否可以使用 s3 或 Cloudflare。我的直觉告诉我没有。

基本要求是:example.com/about.html应该重写(而不是重定向)到example.com/about. 显然,存储在 s3 上的文件名应该保留为*.html.

我偶然发现的一个黑客是:

  1. 将服务器上的文件名更改为about(不带文件扩展名)。
  2. 然后,在 s3 控制台中,将元数据改content-typetext/html.

我认为这是一个可怕的“解决方案”:访问*.html结果为 404。当然,除非您创建一个带有.html扩展名的重复文件,然后可能在 Cloudflare 中创建一个 url 转发规则。它不仅非常混乱,而且根本无法扩展。

有没有更好的办法?

4

1 回答 1

4

我的直觉告诉我没有。

你的直觉是正确的和不正确的。

S3 不能同时拥有这两种方式。不支持隐含的扩展......但是,有一种方法可以在保持(可以说)搜索引擎优化的同时做到这一点。

而不是aboutabout.html你可以制作aboutabout/about/index.html

在存储桶上启用索引文档。如果浏览器请求/about并且这不是对象,它将看到301 Moved Permanentlywith的响应Location: /about/

当 S3 看到对 的请求时/about/,它将返回 的内容/about/index.html而不发出重定向。


当然,Content-Type如果您在控制台中上传文档时手动设置内容类型,则可以避免您在控制台中更改的原始解决方法。有很多内容类型在上传时控制台不会自动设置,所以我习惯手动设置。

于 2015-10-25T18:24:44.073 回答