search - 向 AWS S3 存储桶添加适当的权限以允许 SEO

标签 search amazon-s3 seo google-search

我正在尝试使用 https://www.google.com/webmasters/tools/home?hl=en 验证我的网站以通过 Google 进行 SEO 验证.我正在使用 AWS S3 托管我的内容,并使用 AWS Cloudfront 通过 CDN 提供内容。我正在关注此 list :http://www.wikihow.com/Get-Your-Website-Indexed-by-Google正在执行第 4 步。

Google 列出的验证步骤是:

  1. 下载此 HTML 验证文件。 [googlelongstringofcharacters.html]
  2. 上传文件到https://www.dynamicdentaledu.com/
  3. 访问 https://www.dynamicdentaledu.com/google 确认上传成功longstringofcharacters.html 在您的浏览器中。
  4. 点击下面的验证。 为保持验证状态,请勿删除 HTML 文件,即使验证成功后也是如此。

我已将 HTML 文件添加到我网站的根目录中。当我在第 3 步中单击确认时,我得到:

enter image description here

所以我跳过了它并在第 4 步中单击了 Verify 按钮。Google 说:

Verification failed for https://www.dynamicdentaledu.com/ using the HTML file method (less than a minute ago). We were unable to connect to your server.

我认为这是由于我拥有 S3 存储桶的权限和存储桶策略所致。它们分别是:

enter image description here

{
    "Version": "2008-10-17",
    "Statement": [
        {
            "Sid": "AddPerm",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::dynamicdentaledu.com/*"
        }
    ]
}

如何让 Google 访问它需要的内容?


编辑:关注AWS's bucket policies ,我将政策更改为:

{
    "Version": "2008-10-17",
    "Statement": [
        {
            "Sid": "AddPerm",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::dynamicdentaledu.com/*"
        }
    ]
}

我现在得到:

<Error>
<Code>NoSuchKey</Code>
<Message>The specified key does not exist.</Message>
<Key>google*longstringofcharacters*.html</Key>
<RequestId>42DD1F1F0D5E06F7</RequestId>
<HostId>
zbmsLAEMz3ed2zKx3gKCHjrtHxeWmaLl16JJs6012zFcLQdnMH48mFJY1YOETD3WMS/8NwkU3SY=
</HostId>
</Error>

最佳答案

你有三个问题。

  • 默认情况下,CloudFront 会在您修复问题后 5 分钟内向浏览器返回错误。当源服务器返回错误时,通常 CloudFront 没有理由不断重试。在这种情况下,您可能需要在 CloudFront 中将 403 和 404 错误的错误缓存 TTL 重新配置为 0 秒。请参阅我对 Amazon CloudFront Latency 的回答对此有进一步的解释。

  • 您不需要更改存储桶策略。如果您的网站在其他方面正常工作并且您上传了这个新对象并选择了“公开所有内容”选项(如果使用 API 则相当于设置 x-amz-acl: public-read)那么这应该就足够了,尽管上面提到的 5 分钟计时器可能会很复杂您的故障排除过程。另请注意,在您的存储桶权限中,您允许每个人列出您的存储桶的内容。这并不是实际导致这里的问题,而是一种可能过于宽松的配置,需要提及。此选项允许任何人下载您所有文件的完整列表,这在大多数情况下似乎不是一个好主意。

  • 您没有使用正确的名称上传文件。 <Code>NoSuchKey</Code> 从不 因任何原因而返回,除了简单地说,存储桶中没有具有此键 (path/filename.ext) 的对象。它不能由策略、权限、ACL 等引起。在 S3 控制台中检查:该文件未按照您的意图命名,或者不在正确的位置,在存储桶的根目录中。据我所知,一长串字符不是 secret 值——只是一个模糊/不可预测的值——所以如果这里的信息不能帮助你解决这个问题,显示控制台的屏幕截图,包括这个对象及其属性不应给您带来任何安全问题。如果需要,这对于进一步的故障排除可能是必要的。

关于search - 向 AWS S3 存储桶添加适当的权限以允许 SEO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39693440/

相关文章:

python - django应用程序中的多字段搜索错误结果

python-3.x - 将内存中的 HTML 保存到 S3 AWS Python Boto3

node.js - AWS node.js 没有创建 S3 存储桶?

javascript - 如果通过 JavaScript 设置 'rel="nofollow"',(Google) 机器人/爬虫会跟踪链接吗?

c# - SEO:自定义站点地图提供程序与静态 web.sitemap 文件

search - Emacs Lisp 向后搜索

swift - 弹出 View : Suggesting users when @ is written (like Instagram and Facebook)

javascript - 手动触发 jQuery 自动完成

ios - 将图像上传到 S3 无法完成上传

php - 哪个更好,404 错误页面或重定向到首页