Я хочу создать http-сайт:http://example1.comи https-сайт:https://example2.com используя следующую конфигурацию:
Listen 80
Listen 443
NameVirtualHost *:80
NameVirtualHost *:443
<VirtualHost *:80>
ServerName example1.com
DocumentRoot /var/www/example1.com/public_html
</VirtualHost>
<VirtualHost *:443>
ServerName example2.com
DocumentRoot /var/www/example2.com/public_html
SSLCertificateFile...
SSLCertificateKeyFile...
SSLEngine On
</VirtualHost>
Однако, если я приеду https://example1.com, Я перенаправлен на https://example2.com. Если я приеду http://example2.com, Я перенаправлен на http://example1.com. Я хотел бы https://example1.com и http://example2.com вообще не существует. Как мне поступить? Я знаю, что могу добавить еще два виртуальных хоста, чтобы соответствовать другой версии веб-сайтов. Я также могу перенаправить одну версию на другую ради SEO. Но это неестественно. Представьте, что вы настроили только один сайт https, а apache прослушивает только порт 443, поисковые системы никогда не узнают о существовании http-версии сайта, которая имеет лучший SEO-эффект. Это именно то, что я хочу.
Я также могу перенаправить одну версию на другую
Это совершенно правильное решение. Ваш Apache теперь прослушивает оба 80
и 443
, а VirtualHost
сопоставление выполняется внутри соединения, а не до него. Следовательно, ваш сервер должен что-то ответить, и перенаправление HTTP на канонический адрес было бы идеальным.