301 Redirect на Apache: конфликт с HTTP => правилами перезаписи HTTPS - PullRequest
0 голосов
/ 30 декабря 2018

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

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

  1. основной домен (policymakr.domains, который имеет страницу index.html и должен быть доступнымна сервере по протоколу SSL), чтобы быть доступным на сервере;
  2. все остальные tlds для перенаправления через перенаправление 301 на https://www.policymakr.com, которое размещается отдельно на управляемом хосте WordPress;
  3. перенаправить весь входящий 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.

Я в основном не знаю, что я здесь не так делаю.

1 Ответ

0 голосов
/ 30 декабря 2018

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

...