Виртуальные хосты Apache Non-www не работают - PullRequest
0 голосов
/ 23 июня 2018

Я настраиваю файл Virtual Hosts в своей системе CentOS 7, и у меня возникают проблемы с правильным разрешением моего домена.

Вот как выглядит мой текущий файл /etc/httpd/conf.d/vhost.conf

NameVirtualHost *:80

<VirtualHost *:80>
   ServerAdmin webmaster@domain.com
   ServerName www.domain.com
   ServerAlias domain.com
   DocumentRoot /var/www/html/domain.com/public_html/
   ErrorLog /var/log/httpd/error.log
   CustomLog /var/log/httpd/access.log combined

   RewriteEngine on
   RewriteCond %{SERVER_NAME} =www.domain.com [OR]
   RewriteCond %{SERVER_NAME} =domain.com
   RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

Кажется, правильные перенаправления происходят.Например:

domain.com перенаправляет на https: //www.domain.com www отлично работает

НО

https: //domain.com не работаетhttp: //domain.com не работает

На самом деле, если я удаляю перенаправления, которые я установил, domain.com вообще не работает, поэтому похоже, что ServerAlias ​​не работает?

Мне интересно, нужен ли мне еще один редирект или есть какой-то другой шаг, который я пропускаю?

Кроме того, не обращайте внимания на пробелы между http и именем домена.StackOverflow заставил меня отформатировать его таким образом.

Ответы [ 2 ]

0 голосов
/ 27 июня 2018

Я решил проблему.Мой локальный файл хостов настроен так, чтобы указывать на старый устаревший IP-адрес ……

domain.com *bad ip address*

Я так смущен.Должно быть, я настроил это несколько месяцев назад и забыл.

0 голосов
/ 24 июня 2018

Как указано, никакой запрос к чему-либо https никогда не будет работать. Обычно у вас есть только VirtualHost на порту 80. У вас есть директива Listen для этого порта, верно?

Для ваших перенаправлений. Там написано: если вы запрашиваете http://www.example.com или http://example.com, перенаправьте на https://<WHAT THE USER ASKED FOR>. По сути, вы заставляете своих пользователей использовать https все время, никаких проблем нет. Но у вас нет VirtualHost на порту 443, следовательно, нет ответа.

Итак:

Listen *:80
<VirtualHost *:80>
    ServerName www.example.com
    ServerAlias example.com

    ErrorLog  /var/log/httpd/80_error.log
    CustomLog /var/log/httpd/80_access.log combined

    RewriteEngine on
    RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
</VirtualHost>

Listen *:443
<VirtualHost *:443>
    ServerName www.example.com
    # in case users do directly to https
    ServerAlias example.com    

    DocumentRoot /var/www/html/domain.com/public_html/
    DocumentIndex index.html

    ErrorLog  /var/log/httpd/443_error.log
    CustomLog /var/log/httpd/443_access.log combined

    # SSL CONFIGURATIONS, TODO!
</VirtualHost>
  • В вашем *: 443 VH вам нужно будет настроить сертификаты и SSL.
  • Ваши сертификаты должны быть действительны для и www.example.com и example.com, чтобы избежать жалоб браузера.
  • Осторожно, в conf.d может быть включен файл ssl.conf, который определяет некоторые из них. Убедитесь, что вы установили его только один раз, чтобы избежать путаницы.
  • Нет необходимости определять DocumentRoot в *: 80 VH, поскольку он только перенаправляет и не отвечает на содержимое клиента.

Веселись!

...