วิธีสร้าง subdomain โดยใช้ mod rewrite ของ apache
กรณีนี้มีคนรีเควสเยอะมากมาย บางที่ก็ให้คำตอบ(แต่มักจะไม่ค่อยครบถ้วนเท่าไหร่)
เอาเป็นว่าลองอ่าน article นี้แล้วกัน
การทำ subdomain โดยใช้ mod rewrite ของ apache นั้น จุดประสงค์ก็มีหลายอย่าง
เช่น เพื่อทำให้โดเมนของ ผู้ใช้ระบบดูน่าเชื่อถือมากขึ้น, บางท่านบอกว่าทำให้ SEO ดีขึ้น
โจทย์ : จงสร้าง subdomain ให้ user “domori” ในเว็บ blogs.com (โดยปัจจุบันการอ้างถึง user
“domori” ใน blogs.com ทำโดยการเรียก http://www.blogs.com/member.php?user=domori)
วิธีการทำมีดังนี้
1. ก่อนอื่นต้องทำการสร้าง wildcard(*) ใน zone ของ blogs.com ก่อนครับ
(โดยคนที่จดโดเมนของ registrar ต่างประเทศเช่น Godaddy.com, Name.com สามารถเข้าไปแก้ไขในส่วนของ DNS management ได้เลย แต่สำหรับการจดผ่าน ผู้ให้บริการในไทย นั้นคงต้องโทรไปบอกให้เขาเพิ่มให้ครับ)
การสร้าง wildcard(*) ทำดังนี้ เพิ่ม record ใน zone ของ blogs.com (ด้านล่างนี้เลย)
*.blogs.com IN CNAME blogs.com
หลังจากนั้น ลองทดสอบดูโดยการ ping domori.blogs.com ถ้าได้ก็จะมี result กลับมา
2. หลังจาก ทะลวงช่อง DNS ให้ domori แล้ว ต่อไปก็คือต้องมาจัดการ httpd ของ webhosting ว่าเมื่อมีการ request domori.blogs.com แล้วจะให้วิ่งไปไหน โดยการเพิ่ม alias ใน virtaul host ของ blogs.com ใน ไฟล์httpd ดังนี้
ServerAlias www.blogs.com blogs.com *.blogs.com <= เพิ่มอันนี้เข้าไป
3. เท่านี้ domori.blogs.com ก็เกือบจะใช้ได้แล้ว :) แต่ยังก่อน เราต้องมาเขียน .htaccess เพื่อจัดการ rewrite rule http://www.blogs.com/member.php?user=domori เป็น http://domori.blogs.com
โดย สร้าง .htaccess เก็บไว้ใน public_html น่ะครับ ส่วนในไฟล์ .htaccess มีเนื้อหาสาระดังนี้
Options -Indexes Options +FollowSymLinks RewriteEngine On <p>RewriteCond %{HTTP_HOST} !^www.blogs.com RewriteCond %{HTTP_HOST} ([^.]+).blogs.com RewriteRule ^(.*)$ member.php?user=%1
เท่านี้ domori ก็กระโดดแซง ทั้ง member.php และ blogs.com ไปอยู่ข้างหน้า กลายเป็น domori.blogs.com ได้แล้ว ไว้เจอกันใหม่ครับ
บทความเขียนโดย www.codeans.com