ดังที่กล่าวไว้ในความคิดเห็น นี่คือข้อมูลอ้างอิงสำหรับ Apache มีหลายวิธีในการดำเนินการ: โฮสติ้งเสมือนจริงจำนวนมากที่กำหนดค่าแบบไดนามิก, โฮสต์เสมือนจำนวนมากแบบไดนามิกพร้อม mod_rewrite.
ทางออกที่ง่ายที่สุดที่ฉันพบหลังจากการทดสอบอีกสองสามครั้งคือ: หนึ่งเดียว <VirtualHost>
<VirtualHost *:80>
ServerName example.com
ServerAlias *.example.com
DocumentRoot /www/example
<Directory />
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
ด้วยไวด์การ์ดนี้ นามแฝงเซิร์ฟเวอร์
.
ด้วย .htaccess
ที่มี
RewriteEngine เปิดอยู่
RewriteRule ^(.*)$ index.php [QSA,L]
จากนั้นเราสามารถกำหนดเส้นทางทั้งหมดสำหรับผู้ใช้แต่ละคนผ่าน PHP:
<?php
$host = $_SERVER['HTTP_HOST'];
$sname = $_SERVER['SERVER_NAME'];
// parse the subdomain of $host or $sname and deliver
// the content accordingly (using the database)
?>
ประโยชน์: ยังใช้งานได้หากผู้ใช้ขั้นสุดท้ายกำลังใช้งานอยู่ โดเมนที่กำหนดเองของเขาเอง ด้วยระเบียน CNAME DNS ตัวอย่าง:
www.userabc.com CNAME userpage-userabc.example.com
จากนั้นใน PHP $โฮสต์
จะแสดงที่นี่ www.userabc.com
. หากข้อมูลโดเมนที่กำหนดเองนี้อยู่ในฐานข้อมูล เราสามารถให้บริการเนื้อหาตามนั้น แม้ว่าผู้ใช้จะใช้ a โดเมนที่กำหนดเอง.
หมายเหตุ: ในกรณีที่ผู้ใช้ใช้โดเมนที่กำหนดเองกับ CNAME สิ่งนี้มีประโยชน์ในการพิจารณาว่า VirtualHost เริ่มต้นใดที่จะใช้เมื่อคำขอมาพร้อมกับโฮสต์ที่ไม่ได้อยู่ในรายการ ชื่อเซิร์ฟเวอร์
คำสั่ง: Apache เริ่มต้น VirtualHost.