ฉันมีเว็บไซต์ www.example.comที่ฉันไม่สามารถเยี่ยมชมโดยไม่เข้า www. ฉันกำลังพยายามใช้ Apache Virtual Host หากป้อนที่ไม่ใช่ www ระบบจะเปลี่ยนเส้นทางไปที่ www โดยอัตโนมัติ
ถ้าฉันพยายามที่จะไป http://www.example.com, มันเปลี่ยนเส้นทางไปที่ https://www.example.com และใช้งานได้
ถ้าฉันพยายามที่จะไป https://www.example.comมันยังใช้งานได้
อย่างไรก็ตาม ปัญหาคือ:
ถ้าฉันเข้าไป http://example.com, มันเปลี่ยนเส้นทางไปที่ https://example.com และพูดว่า:
ไม่สามารถเข้าถึงไซต์นี้ ตรวจสอบว่าใน example.com มีการพิมพ์ผิดหรือไม่
หากการสะกดถูกต้อง ให้ลองเรียกใช้ 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>