, у меня есть сайт, 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и говорит:
This site can’t be reached Check if there is a typo in example.com.
If spelling is correct, try running Windows Network Diagnostics.
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>
Я не верю, что это проблема с Apache. Более вероятно, что ваш авторитетный DNS просто не имеет записи для версии вашего веб-сайта, отличной от WWW. Например, nslookup www.example.com
вернет IP-адрес вашего сервера. Если вы сделаете nslookup example.com
, он также должен вернуть IP-адрес вашего сервера; если это не так, сначала исправьте это.