Настройка AWS Beanstalk с DNS-сервером Name.Com - перенаправление URL не работает - PullRequest
1 голос
/ 07 июля 2019

У меня есть веб-сайт www.example.com, и он размещен на эластичном бобовом стебле.Я использую DNS-серверы name.com.Я выполнил шаги в следующих блогах, чтобы настроить параметры https и URL:

https://colintoh.com/blog/map-custom-domain-to-elastic-beanstalk-application https://medium.com/@jbesw/tutorial-adding-https-to-a-custom-domain-on-elastic-beanstalk-29a5617b8842

т.е.

  1. СоздатьCNAME, указывающая www.example.com на beanstalk
  2. Добавьте перенаправление URL для @ .example.com на https://www.example.com

После этого ссылки www.example.com будут работатьи http://example.com перенаправляется на www.example.com.

Но для страницы внутри сайта, например www.example.com/about, просто набрать http://example.com/about делаетне работает и не перенаправляется на www.example.com/about.

Большинство блогов предлагают перейти на AWS Route 53. Это единственный вариант?

1 Ответ

0 голосов
/ 20 июля 2019

Проблема, как вы узнали, заключается в том, что перенаправления на уровне DNS не работают на уровне конкретной страницы.По крайней мере, не без некоторой дополнительной магии, происходящей в фоновом режиме (которую реализуют некоторые регистраторы).

Даже если бы эта установка сработала , у вас все равно остались бы некоторые проблемы с SEO, с которыми нужно было бы иметь дело.Например, вы хотите, чтобы перенаправление example.com> www.example.com (в любом случае, о котором я знаю) было перенаправлением 301.Это позволит поисковым системам, таким как Google, знать: «Пожалуйста, используйте только www версию этой страницы».В противном случае у вас фактически есть две страницы, каждая из которых (или обе) может быть проиндексирована и считается дублирующим друг друга.

Использование серверов Route 53, безусловно, вариант, но у вас нетиспользовать.Проблема в том, что вам нужно сделать это на уровне сервера, а не на уровне DNS .

На уровне сервера вы можете указать более сложные и детальные правила перенаправления, такие как «send»любой трафик не-www, не https на версию www, https и указывает, что это постоянное предпочтение (301), что перенаправление (на сервере Apache) будет выглядеть следующим образом:

RewriteEngine On

RewriteCond %{HTTPS} !=on [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.{HTTP_HOST}%{REQUEST_URI} [R=301,L,NE]

Краткий справочник: NC означает сопоставление без учета регистра. R указывает тип перенаправления (здесь 301), NE указывает, что нельзя экранировать символы, такие как # или ?, которые используются во многих схемах URL.Для полного списка флагов, используемых во время Apache RewriteRules, прочитайте эту веб-страницу .

Существуют различные способы достижения этого для Apache, NGINX и Windows Server. У Amazon есть справочная статья , в которой подробно описаны некоторые подходы к реализации. Копирование подробностей статьи здесь выходит за рамки вашего вопроса IMO.

Итак, чтобы ответить на ваш вопрос: Маршрут53 не единственный вариант.Вы можете использовать любого регистратора или DNS-хоста, который захотите.Проблема в том, что вам нужно полностью переосмыслить свой подход и сосредоточиться на правилах уровня сервера, а не правилах уровня DNS.Я не эксперт и нахожу это раздражающим, если я так поступаю, поэтому, надеюсь, кто-то придет с более проницательным подходом.

...