Nginx ตรวจสอบโดเมนทั้งหมดแล้วเพิ่ม www หากไม่มีอยู่


1

การตั้งค่านี้ใช้สำหรับหลายโดเมนที่แชร์แพลตฟอร์ม CMS เดียว มันจะอนุญาตให้โดเมนใด ๆ ชี้ไปที่ ip ของเซิร์ฟเวอร์ของฉัน

ฉันสามารถใช้ nginx server_name _; เพื่อจับทั้งหมด

แต่ฉันต้องการ 301 เปลี่ยนเส้นทางไปที่ www (ผนวก www. infront) หากไม่มี www ถ้า www มีอยู่ก็ไม่เป็นไร

ฉันจะทำสิ่งนี้ได้อย่างไร

คำตอบ:


0

สิ่งนี้สามารถใช้งานได้ (ไม่ได้ทดสอบ!):

server {
    server_name  ~^www\.;
    <deliver content here>
}
server {
    server_name  ~^(?!www\.);
    location / {
        return 302 $scheme://www.$host$request_uri;
    }
}

มีตัวเลือกอื่นหายไปตอนนี้! ชอบ "ฟัง" และ "สถานที่"
คุณควรเพิ่มเซิร์ฟเวอร์บล็อกอื่นด้วยไอพีสาธารณะของเซิร์ฟเวอร์ที่เปลี่ยนเส้นทางการรับส่งข้อมูลที่ไม่ใช่ vhost ไปยังไซต์เริ่มต้น
คุณควรคำนึงถึงลำดับที่ประมวลผลคำสั่ง server_name: http://nginx.org/en/docs/http/server_names.html

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.