У меня есть сервер Ubuntu 18.04 на экземпляре Amazon EC2 под управлением Apache 2 с установленным сертификатом SSL, который я использую исключительно для размещения виртуальных хостов для вариантов .tld домена policymakr.com , для совместного использованиятот же фиксированный IP.
Я хочу, чтобы конфигурация достигла следующего:
- основной домен (policymakr.domains, который имеет страницу index.html и должен быть доступнымна сервере по протоколу SSL), чтобы быть доступным на сервере;
- все остальные tlds для перенаправления через перенаправление 301 на https://www.policymakr.com, которое размещается отдельно на управляемом хосте WordPress;
- перенаправить весь входящий http-трафик policymakr.domains на https, а весь трафик policymakr.domains - на www.policymakr.domains.
(Причина, по которой я это делаю, заключается в том, что я хочу переназначить tlds через 301 для целей SEO, и хост моего сайта WordPress не может этого добиться, потому что сайтразмещен на общем сервере.)
Я начал настраивать tlds, и они перенаправились нормально.Файлы .conf для tlds (.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 для других tlds перестала работать.Вместо этого все они теперь перенаправляют на https://www.policymakr.domains.
Я в основном не знаю, что я здесь не так делаю.