Apache 未将非 WWW 重定向到 WWW HTTPS

Apache 未将非 WWW 重定向到 WWW HTTPS

我有一个网站,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>

答案1

我不认为这是 Apache 的问题。更可能的是,您的权威 DNS 根本没有非 WWW 版本的网站条目。例如,nslookup www.example.com将返回您服务器的 IP 地址。如果返回,nslookup example.com它也应该返回您服务器的 IP 地址;如果没有,请先修复它。

相关内容