У меня есть сервер Ubuntu 18.04 на экземпляре Amazon EC2 под управлением Apache 2 с установленным сертификатом SSL, который я использую исключительно для размещения виртуальных хостов для вариантов .tld. policymakr.com домен, использующий тот же фиксированный IP.
Я хочу, чтобы конфигурация достигла следующего:
(Причина, по которой я это делаю, заключается в том, что я хочу переназначить 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 для других tld перестала работать. Вместо этого все они теперь перенаправляются на https://www.policymakr.domains.
Я в принципе не знаю, что я здесь не так.
Через несколько часов вся конфигурация фактически заработала, возможно, это была какая-то проблема с кешированием. Единственное изменение, которое я добавил, было ServerAlias policymakr.[tld]
запись в каждый .conf
файл.