Виртуальные хосты на Apache не применяют перенаправление 301

У меня есть сервер Ubuntu 18.04 на инстанс Amazon EC2 с Apache 2, с установленным сертификатом SSL, который я использую исключительно для размещения виртуальных хостов для вариантов .tld домена policymakr.com , использующих один и тот же фиксированный IP-адрес.

Я хочу, чтобы конфигурация обеспечивала следующее:

  1. основной домен (policymakr.domains, имеющий страницу index.html и предназначенный для доступа на сервере через SSL) должен быть доступен на сервере;
  2. все остальные TLD должны перенаправляться через перенаправление 301 на https://www.policymakr.com , который размещается отдельно на управляемом хосте WordPress;
  3. перенаправляет весь входящий трафик http policymakr.domains на https, а весь трафик policymakr.domains на www.policymakr. домены.

(Причина, по которой я это делаю, состоит в том, что я хочу переназначить tld через 301 для целей SEO, и это может ' Это достигается хостом моего сайта WordPress, потому что сайт размещен на общем сервере.)

Я начал настраивать tld, и они нормально перенаправили. Файлы .conf для tld (.net, .org, .info и .io) идентичны и выглядят следующим образом:

<VirtualHost *:80>
   ServerAdmin webmaster@policymakr.com
   ServerName www.policymakr.[tld]
   DocumentRoot /var/www/html/policymakr.[tld]/
   ErrorLog /var/www/logs/error.log
   Redirect 301 / https://www.policymakr.com/
</VirtualHost>

После того, как я настроил виртуальные хосты tld, все 301 редиректы начали работать безупречно.

] Я продолжал настраивать виртуальный хост для policymakr.domains в течение длительного времени из-за небольшой дополнительной сложности, связанной с необходимостью установки внешнего SSL-сертификата (сертификаты Amazon, похоже, не могут быть прикреплены к экземплярам EC2).

Виртуальный хост policymakr.domains, который я настроил, выглядит следующим образом:

<VirtualHost *:80>
   ServerAdmin webmaster@policymakr.com
   ServerName www.policymakr.domains
   ServerAlias policymakr.domains
   DocumentRoot /var/www/html/policymakr.domains/
   ErrorLog /var/www/logs/error.log
   RewriteEngine on
   RewriteCond %{HTTP_HOST} ^policymakr\.domains
   RewriteRule ^(.*)$ http://www.policymakr.domains/$1 [R=permanent,L]
</VirtualHost>

<VirtualHost *:443>
   ServerName www.policymakr.domains
   ServerAlias policymakr.domains
   DocumentRoot /var/www/html/policymakr.domains/
   SSLEngine on
   SSLCertificateFile /etc/apache2/ssl/[crt file name]
   SSLCertificateKeyFile /etc/apache2/ssl/private/[private key]
   SSLCertificateChainFile /etc/apache2/ssl/[bundle file]
   RewriteEngine on
   RewriteCond %{HTTPS_HOST} ^policymakr\.domains
   RewriteRule ^(.*)$ https://www.policymakr.domains/$1 [R=permanent,L]
</VirtualHost>

После этого перенаправления для policymakr.domains работают точно так, как я хотел (т.е. без www на www, http на https), но 301 Redirects для другие TLD перестали работать. Вместо, все они теперь перенаправляют на https://www.policymakr.domains .

Я в основном не знаю, что я здесь ошибаюсь.

1
задан 30 December 2018 в 02:52
1 ответ

Вся конфигурация фактически перестала работать через несколько часов, возможно, это была какая-то проблема с кешированием. Единственное изменение, которое я добавил, - запись ServerAlias ​​policymakr. [Tld] в каждом файле .conf .

1
ответ дан 3 December 2019 в 23:09

Теги

Похожие вопросы