Рейтинг:1

Apache не перенаправляет не WWW на WWW HTTPS

флаг us

У меня есть сайт, www.example.com, который я не могу посетить без входа в www. Используя виртуальный хост Apache, я пытаюсь сделать так, чтобы при вводе не-www он автоматически перенаправлялся на www.

Если я попытаюсь пойти в http://www.example.com, он перенаправляет на https://www.example.com и работает

Если я попытаюсь пойти в https://www.example.com, тоже работает.

Однако проблема в следующем:

Если я войду http://example.com, он перенаправляет на https://example.com и говорит:

Этот сайт недоступен Проверьте, нет ли опечатки в example.com.
Если написание правильное, попробуйте запустить диагностику сети Windows.
DNS_PROBE_FINISHED_NXDOMAIN

Я получаю такое же сообщение, если пытаюсь перейти к https://example.com

Проблема в том, что мой сайт работает только с "www". На не-www, как я могу заставить www.? Я пробовал следующее безрезультатно:

<VirtualHost *:80>
    ServerName example.com
    Redirect permanent / https://www.example.com/
</VirtualHost>
<VirtualHost *:443>
    ServerName www.example.com
    ServerAlias example.com
    DocumentRoot /var/www/example.com/public/

    # Force non-www to www in HTTPS.
    RewriteEngine On
    RewriteCond %{HTTP_HOST} !^www\. [NC]
    RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

    SSLEngine On
    SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
    SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem

    ErrorLog /var/log/httpd/example.com.error.log
    CustomLog /var/log/httpd/example.com.access.log combined
</VirtualHost>
Рейтинг:2
флаг vn

Я не верю, что это проблема с Apache. Более вероятно, что ваш авторитетный DNS просто не имеет записи для не-WWW-версии вашего веб-сайта. Например, nslookup www.example.com вернет IP-адрес вашего сервера. Если вы делаете nslookup example.com он также должен вернуть IP-адрес вашего сервера; если это не так, исправьте это в первую очередь.

флаг us
Вот оно! Это не имело ничего общего с моим виртуальным хостом Apache, а с DNS. После того, как я добавил запись A, указывающую на example.com, все заработало. Перенаправление на моем виртуальном хосте смогло перенаправить не WWW на WWW и SSL. Отличный ответ. Большое спасибо за Вашу помощь!
Laenka-Oss avatar
флаг lk
@tsc_chazz, когда вы имеете в виду IP, вы имеете в виду «IP-адрес локального хоста (127.0.0.1)» или мой «общедоступный IP-адрес моего маршрутизатора»? Потому что, когда я `nslookup www.example.com ==> 192.64.119.109, который является IP-адресом namecheap`, и `nslookup example.com ==> 127.0.0.1`, это даже не мой общедоступный IP-адрес. Спасибо, пожалуйста
tsc_chazz avatar
флаг vn
Здесь есть три возможности в зависимости от того, о каком сервере имен вы говорите. Чтобы ваш сайт был виден миру, ваш публичный адрес — внешний адрес вашего маршрутизатора — должен быть установлен в вашем официальном общедоступном DNS — вы сказали namecheap.com? Чтобы ваш сайт был виден в вашей внутренней сети, его внутренний IP-адрес — вероятно, 192.168.0.something — должен быть установлен в списке локальных имен вашего маршрутизатора. И сама машина может иметь имя сайта в своем файле `hostnames` или `hosts`, который возвращает `127.0.0.1`.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.