#linux #apache #redirect
Вопрос:
Я пытаюсь реализовать редирект, который выводит мой сайт из https://example.com чтобы https://www.example.com через перенаправление, а не из файла .htaccess. Наш сайт уже перенаправляет http-запросы на https://www.example.com. Я опубликовал то, что у нас есть ниже.
<Virtualhost *:80>
ServerName www.example.com
DocumentRoot /var/www/html
RewriteEngine on
RewriteRule ^/?(.*) https://www.example.com/$1 [R=301,L]
</VirtualHost>
<VirtualHost *:443>
ServerName www.example.com:443
DocumentRoot /var/www/html
SSL information here
Комментарии:
1. Добро пожаловать в StackOverflow! Как далеко ты продвинулся? (Что произойдет, если вы попробуете это сейчас?) Вы настроили свой DNS так, чтобы голый домен (
example.com
) указывал на ваш веб-сервер, или это выходит за рамки того, о чем вы здесь спрашиваете?2. Привет, Джефф. Спасибо за ответ. — да, оба example.com и www.example.com укажите на веб — сервер. Все работает с http > https и > www .. Единственная проблема заключается в том, чтобы получить example.com для работы с example.com . Надеюсь, это даст вам больше разъяснений.
3. Вы ознакомились с документацией по каноническим именам хостов ?
4. «Единственная проблема заключается в том, чтобы начать
https://example.com
работатьhttps://www.example.com
» — Из кода, который вы включили в свой вопрос, предположительноhttp://example.com
, также будет проблемой в настоящее время?5. Нет, в настоящее время это работает, так как все http-запросы перенаправляются на https. Единственная проблема заключается в example.com не перенаправлять.
Ответ №1:
Настройте только виртуальные хосты HTTPS/443:
<VirtualHost *:443>
ServerName www.example.com:443
DocumentRoot /var/www/html
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www. [NC]
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
SSL information here