Виртуальный процесс Cloudfront вызывает повторяющиеся проблемы с содержимым

Я использую CloudFront для работы с изображениями, css и js файлами для своего веб-сайта с использованием опции пользовательского происхождения с поддоменами CNAMEd для моей учетной записи. Это работает очень хорошо.

Основной сайт: www.mainsite.com

  • static1.mainsite.com
  • static2.mainsite.com

Пример страницы: www.mainsite.com/summary/page1.htm

Эта страница вызывает изображение из static1.mainsite.com/images/image1.jpg

Если Cloudfront еще не кэшировал изображение, он получает изображение с сайта www.mainsite.htm/images/image1.jpg

Все это прекрасно работает.

Проблема заключается в том, что оповещение Google сообщило, что страница найдена на обоих:

Страница должна быть доступна только с www. сайт. Страницы не должны быть доступны из доменов CNAME.

Я попытался поместить mod rewrite в файл .htaccess, и я также попытался поместить exit() в основной файл script.

Но когда Cloudfront не находит статическую версию файла в своем кеше, он вызывает его с основного сайта и затем кэширует его.

Вопросы:

1. What am I missing here?
2. How do I prevent my site from serving pages instead of just static components to cloudfront?
3. How do I delete the pages from cloudfront? just let them expire?

Спасибо за вашу помощь.

Джо

Ответ 1

[Я знаю, что эта ветка устарела, но я отвечаю за таких людей, как я, которые видят это несколько месяцев спустя.]

Из того, что я читал и видел, CloudFront не всегда идентифицирует себя в запросах. Но вы можете обойти эту проблему, переопределив robots.txt в дистрибутиве CloudFront.

1) Создайте новый ведро S3, содержащее только один файл: robots.txt. Это будет файл robots.txt для вашего домена CloudFront.

2) Перейдите к настройкам распространения в консоли AWS и нажмите "Создать происхождение". Добавьте ведро.

3) Перейдите в Поведение и нажмите "Создать поведение": Path Pattern: robots.txt Происхождение: (ваше новое ведро)

4) Установите поведение robots.txt с более высоким приоритетом (меньшее число).

5) Перейдите к недействительным и недействительным /robots.txt.

Теперь abc123.cloudfront.net/robots.txt будет отправлен из ведра, и все остальное будет обслуживаться из вашего домена. Вы можете разрешить/запретить сканирование на любом уровне независимо.

Другой домен/субдомен также будет работать вместо ведра, но зачем идти на поводу.

Ответ 2

Вам нужно добавить файл robots.txt и сообщить сканерам не индексировать контент в static1.mainsite.com.

В CloudFront вы можете управлять именем хоста, с которым CloudFront будет обращаться к вашему серверу. Я предлагаю использовать определенное имя хоста, чтобы предоставить CloudFront, который отличается от обычного имени хоста веб-сайта. Таким образом, вы можете обнаружить запрос на это имя хоста и подать файл robots.txt, который запрещает все (в отличие от вашего обычного сайта robots.txt).