Score:1

Apache ไม่เปลี่ยนเส้นทางที่ไม่ใช่ WWW ไปยัง WWW HTTPS

ธง us

ฉันมีเว็บไซต์ 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>
Score:2
ธง vn

ฉันไม่เชื่อว่านี่เป็นปัญหากับ Apache มีแนวโน้มว่า DNS ที่เชื่อถือได้ของคุณจะไม่มีรายการสำหรับเว็บไซต์ของคุณในเวอร์ชันที่ไม่ใช่ WWW ตัวอย่างเช่น nslookup www.example.com จะส่งคืนที่อยู่ IP ของเซิร์ฟเวอร์ของคุณ ถ้าคุณทำ nslookup example.com ควรส่งคืนที่อยู่ IP ของเซิร์ฟเวอร์ของคุณด้วย หากไม่เป็นเช่นนั้น ให้แก้ไขก่อน

us flag
นั่นแหละ! ไม่มีส่วนเกี่ยวข้องกับ Apache Virtual Host ของฉัน แต่เป็น DNS แทน หลังจากที่ฉันเพิ่มระเบียน A ที่ชี้ไปที่ example.com ทุกอย่างก็ทำงาน การเปลี่ยนเส้นทางในโฮสต์เสมือนของฉันสามารถเปลี่ยนเส้นทางที่ไม่ใช่ WWW เป็น WWW และ SSL คำตอบที่ดี ขอบคุณมากสำหรับความช่วยเหลือของคุณ!
Laenka-Oss avatar
lk flag
@tsc_chazz เมื่อคุณหมายถึง IP คุณหมายถึง `localhost IP(127.0.0.1)' หรือ 'public IP ของเราเตอร์' ของฉันหรือไม่ เพราะเมื่อฉัน `nslookup www.example.com ==> 192.64.119.109 ซึ่งเป็น IP ของ namecheap` และ `nslookup example.com ==> 127.0.0.1` ไม่ใช่ IP สาธารณะของฉันด้วยซ้ำ ขอบคุณครับ
tsc_chazz avatar
vn flag
มีความเป็นไปได้สามประการขึ้นอยู่กับเซิร์ฟเวอร์ชื่อที่คุณกำลังพูดถึง เพื่อให้ไซต์ของคุณปรากฏแก่คนทั้งโลก ที่อยู่สาธารณะของคุณ - ที่อยู่ภายนอกของเราเตอร์ของคุณ - จะต้องตั้งค่าใน DNS ที่เชื่อถือได้สาธารณะของคุณ - คุณพูดว่า namecheap.com? เพื่อให้เครือข่ายในบ้านมองเห็นเว็บไซต์ของคุณได้ ควรตั้งค่า IP ภายในซึ่งน่าจะเป็น 192.168.0.something ในรายชื่อในเครื่องของเราเตอร์ และเครื่องเองก็สามารถมีชื่อไซต์ในไฟล์ `hostnames` หรือ `hosts` ที่คืนค่า `127.0.0.1`

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา