Как перенаправить WWW на не-WWW в Amazon Route 53: подробное руководство

Когда дело доходит до управления DNS и веб-трафиком, Amazon Route 53 – популярный выбор среди разработчиков и системных администраторов. Однако по умолчанию Route 53 не перенаправляет субдомен www автоматически на версию веб-сайта без www. В этой статье мы рассмотрим несколько методов достижения этого перенаправления и обеспечения согласованного и унифицированного взаимодействия с пользователем. Мы предоставим примеры кода для каждого метода, чтобы помочь вам легко реализовать перенаправление.

Метод 1: перенаправление веб-сайта корзины S3
Один из подходов к перенаправлению веб-сайтов с www на без www на маршруте 53 заключается в использовании функции хостинга веб-сайтов корзины Amazon S3. Вот как это можно сделать:

  1. Создайте корзину S3 с тем же именем, что и у вашего домена, отличного от www (например, example.com).
  2. Включить статический хостинг веб-сайтов для сегмента.
  3. Добавьте файл index.html с правилом перенаправления, чтобы перенаправлять все запросы с www.example.com на example.com.
  4. Настройте маршрут 53, чтобы указать субдомен www на корзину S3.

Пример кода для index.html:

<html>
  <head>
    <meta http-equiv="refresh" content="0; url=https://example.com" />
  </head>
  <body></body>
</html>

Метод 2: функция Lambda@Edge
Другой метод предполагает использование функции AWS Lambda, связанной с базой раздачи Amazon CloudFront. Вот обзор шагов:

  1. Создайте функцию Lambda@Edge, которая перехватывает входящий запрос и выполняет перенаправление 301 с www.example.com на example.com.
  2. Свяжите функцию Lambda с дистрибутивом CloudFront, настроенным для обработки трафика вашего веб-сайта.
  3. Обновите запись Route 53, чтобы указать субдомен www на дистрибутив CloudFront.

Пример кода функции Lambda@Edge (Node.js):

exports.handler = async (event) => {
  const request = event.Records[0].cf.request;
  const host = request.headers['host'][0].value;
  const redirectUrl = `https://${host.replace('www.', '')}${request.uri}`;
  return {
    status: '301',
    statusDescription: 'Moved Permanently',
    headers: {
      location: [{ key: 'Location', value: redirectUrl }],
    },
  };
};

Метод 3: настройка веб-сервера
Если у вас есть веб-сервер, работающий по маршруту 53, вы можете добиться перенаправления через настройку сервера. Вот пример использования файла .htaccessApache:

  1. Создайте или измените файл .htaccessв корневом каталоге документов вашего веб-сервера.
  2. Добавьте следующие директивы для перенаправления с www.example.com на example.com:
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
    RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]
  3. Убедитесь, что ваш веб-сервер настроен на чтение .htaccessфайлов.

Перенаправление поддомена www на версию вашего веб-сайта без www имеет решающее значение для поддержания постоянного присутствия в Интернете и улучшения SEO. В этой статье мы рассмотрели три метода достижения такого перенаправления в Amazon Route 53: перенаправление веб-сайта корзины S3, функцию Lambda@Edge и настройку веб-сервера. Каждый метод обеспечивает гибкость в зависимости от ваших конкретных настроек и требований. Внедрив один из этих методов, вы можете гарантировать, что ваши посетители всегда попадут на нужную версию вашего веб-сайта, что повысит удобство использования и видимость в поисковых системах.