บทสรุปอย่างรวดเร็ว
- คุณต้องสร้างโดเมนตัวแทนบนเซิร์ฟเวอร์ DNS * .website.com
- จากนั้นในคอนเทนเนอร์ vhost ของคุณคุณจะต้องระบุสัญลักษณ์แทนด้วย * .website.com - สิ่งนี้ทำได้ใน
ServerAlias
DOCs
- จากนั้นแยกและตรวจสอบโดเมนย่อยใน PHP และแสดงข้อมูลที่เหมาะสม
รุ่นยาว
1. สร้างรายการ DNS สัญลักษณ์แทน
ในการตั้งค่า DNS ของคุณคุณต้องสร้างรายการโดเมนสัญลักษณ์เช่น*.example.org
. รายการตัวแทนมีลักษณะดังนี้:
*.example.org. 3600 A 127.0.0.1
2. รวมสัญลักษณ์แทนใน vhost
ถัดไปในการกำหนดค่า Apache คุณต้องตั้งค่าคอนเทนเนอร์ vhost ที่ระบุสัญลักษณ์แทนในคำสั่งServerAlias
DOCs ตัวอย่างคอนเทนเนอร์ vhost:
<VirtualHost *:80>
ServerName server.example.org
ServerAlias *.example.org
UseCanonicalName Off
</VirtualHost>
3. พิจารณาว่าคุณอยู่ในโดเมนย่อยใดใน PHP
จากนั้นในสคริปต์ PHP ของคุณคุณสามารถค้นหาโดเมนได้โดยดูใน$_SERVER
ตัวแปร super global นี่คือตัวอย่างของการคว้าโดเมนย่อยใน PHP:
preg_match('/([^.]+)\.example\.org/', $_SERVER['SERVER_NAME'], $matches);
if(isset($matches[1])) {
$subdomain = $matches[1];
}
ฉันใช้ regex ที่นี่เพื่ออนุญาตให้มีคนเข้าชมไซต์ของคุณผ่าน www.subdomain.example.org หรือ subdomain.example.org
หากคุณไม่เคยคาดหวังว่าจะต้องจัดการกับ www. (หรือโดเมนย่อยอื่น ๆ ) จากนั้นคุณสามารถใช้สตริงย่อยดังนี้:
$subdomain = substr(
$_SERVER['SERVER_NAME'], 0,
strpos($_SERVER['SERVER_NAME'], '.')
);
โฮสติ้งเสมือนจริงจำนวนมาก
โฮสติ้งเสมือนจริงจำนวนมากเป็นรูปแบบที่แตกต่างกันเล็กน้อยจากข้างต้นซึ่งโดยปกติคุณจะใช้เพื่อโฮสต์เว็บไซต์ที่แตกต่างกันจำนวนมากแทนที่จะพยายามใช้แอปพลิเคชันดังกล่าว
ฉันได้จัดทำเอกสารสภาพแวดล้อมการโฮสต์เสมือนที่ใช้ mod_rewrite ของฉันก่อนหน้านี้ในโพสต์บนบล็อกของฉันซึ่งคุณสามารถดูได้ว่าเป็นเส้นทางที่คุณต้องการใช้หรือไม่ นอกจากนี้ยังมีของหลักสูตรที่เกี่ยวข้อง Apache หน้าคู่มือ
Apache ยังมีวิธีภายในในการจัดการกับโฮสติ้งเสมือนจำนวนมากซึ่งมีความยืดหยุ่นน้อยกว่าวิธี mod_rewrite ที่ฉันเคยใช้เล็กน้อย นี่คือทั้งหมดที่อธิบายในการเต้นรำแบบไดนามิกกำหนดค่ามวล Virtual Hosting หน้าคู่มือ
wildcard subdomains
.htaccess