การ Redirect

ความหมายของ URL Redirect
ปกติแล้วใน Web Server จะมีไฟล์ที่เป็นไฟล์แรกสำหรับการแสดงเพจหน้าแรกซึ่งจะวางอยูในตำแหน่ง document root  แต่ในบางครั้งเมื่อผู้ใช้มีการเรียกเข้ามาที่ url หรือ ไฟล์ดังกล่าวบน Web Server แล้ว อาจจะมีความจำเป็นที่ url ดังกล่าวยังไม่พร้อมที่จะให้บริการ เราก็สามารถจะเขียน code ในไฟล์ดังกล่าว ให้มีการเปลี่ยนเส้นทางไปเรียกไฟล์อื่นซึ่งอาจจะอยู่ในอีกไดเร็คทอรี่หรืออีกโฟลเดอร์บน Web Server ตัวเดียวกันหรืออาจจะเปลี่ยนเส้นทางไปเป็น Web Server
อีกตัวก็ได้
ในการให้บริการ Web hosting ซึ่งก็คือการให้เช่าเนื้อที่บน Web Server สำหรับการสร้างเว็บเพจ นั่นก็หมายถึงว่าบน Web Server เพียงเครื่องเดียวจะต้องให้บริการสำหรับหลาย ๆ เว็บไซต์ ปัญหาที่จะตามมาก็คือว่า การจดทะเบียนโดเมน จะต้องมีการเพิ่มข้อมูลลงใน DNS ว่าจะให้ชี้โดเมนแต่ละโดเมนไปที่ IP Address ไหน นั่นก็หมายถึงว่าถ้าเป็นบริการ Web Hosting โดเมนทุกโดเมนที่มีการใช้เนื้อที่บน Web Sever เครื่องเดียวกันก็จะต้องมีการชี้ไปยัง IP อันเดียวกัน เมื่อเป็นแบบนี้ ไฟล์ที่เป็นไฟล์หลักในตำแหน่ง document root บน Web Server ดัวกล่าว จะต้องมีการเขียน code เพื่อตรวจจับว่า url ที่เรียกมาเป็น url อะไร และจะชี้ไปที่โฟลเดอร์ไหนของ Web Server

วิธีการเขียนโค้ดจากที่กล่าวมาก็คือการเขียนโค้ดของ url redirect นั่นเอง

การ redirect แบบง่าย
การ redirect แบบง่ายสามารถทำได้ด้วยการใช้ meta tag ของ html code ดังตัวอย่างต่อไปนี้ :

ความหมายของ URL Redirect
ปกติแล้วใน Web Server จะมีไฟล์ที่เป็นไฟล์แรกสำหรับการแสดงเพจหน้าแรกซึ่งจะวางอยูในตำแหน่ง document root  แต่ในบางครั้งเมื่อผู้ใช้มีการเรียกเข้ามาที่ url หรือ ไฟล์ดังกล่าวบน Web Server แล้ว อาจจะมีความจำเป็นที่ url ดังกล่าวยังไม่พร้อมที่จะให้บริการ เราก็สามารถจะเขียน code ในไฟล์ดังกล่าว ให้มีการเปลี่ยนเส้นทางไปเรียกไฟล์อื่นซึ่งอาจจะอยู่ในอีกไดเร็คทอรี่หรืออีกโฟลเดอร์บน Web Server ตัวเดียวกันหรืออาจจะเปลี่ยนเส้นทางไปเป็น Web Server อีกตัวก็ได้

ในการให้บริการ Web hosting ซึ่งก็คือการให้เช่าเนื้อที่บน Web Server สำหรับการสร้างเว็บเพจ นั่นก็หมายถึงว่าบน Web Server เพียงเครื่องเดียวจะต้องให้บริการสำหรับหลาย ๆ เว็บไซต์ ปัญหาที่จะตามมาก็คือว่า การจดทะเบียนโดเมน จะต้องมีการเพิ่มข้อมูลลงใน DNS ว่าจะให้ชี้โดเมนแต่ละโดเมนไปที่ IP Address ไหน นั่นก็หมายถึงว่าถ้าเป็นบริการ Web Hosting โดเมนทุกโดเมนที่มีการใช้เนื้อที่บน Web Sever เครื่องเดียวกันก็จะต้องมีการชี้ไปยัง IP อันเดียวกัน เมื่อเป็นแบบนี้ ไฟล์ที่เป็นไฟล์หลักในตำแหน่ง document root บน Web Server ดัวกล่าว จะต้องมีการเขียน code เพื่อตรวจจับว่า url ที่เรียกมาเป็น url อะไร และจะชี้ไปที่โฟลเดอร์ไหนของ Web Server

วิธีการเขียนโค้ดจากที่กล่าวมาก็คือการเขียนโค้ดของ url redirect นั่นเอง

การ redirect แบบง่าย
การ redirect แบบง่ายสามารถทำได้ด้วยการใช้ meta tag ของ html code ดังตัวอย่างต่อไปนี้ :

<html>
<head>
<META HTTP-EQUIV=”Refresh” CONTENT=”0;URL=http://www.yourname.com”>
</head>
</html>ซึ่งถ้าเอา source code ข้างบนนี้ไปเป็นไฟล์หลักในตำแหน่ง document root บน Web Server ก็จะทำให้เว็บเพจถูก redirect ไปยัง http://www.yourname.com โดยทันที เพราะค่าของ CONTENT=0 แต่ถ้าต้องการหน่วงเวลาให้ผู้ใช้ได้อ่านข้อความบางอย่าง ก่อนการ redirect ก็สามารถทำได้ด้วยการกำหนดค่า CONTENT ไม่เป็น 0 ดังตัวอย่างต่อไปนี้ :

<html>
<head>
<META HTTP-EQUIV=”Refresh” CONTENT=”5;URL=http://www.yourname.com”>
</head>
<body>
<center>
เว็บไซต์ของเรามีการเปลี่ยนเป็นชื่อใหม่แล้ว การเข้ามาเว็บไซต์ของเราครั้งต่อไป กรุณาใช้ชื่อ
<a href=”http://www.yourname.com”>www.yourname.com</a&gt;
</center>
</body>
</html>

แต่วิธีการ redirect แบบข้างบนนี้จะทำให้ชื่อ url ตรงช่อง address ของ browser ถูกเปลี่ยนไปเป็นชื่อใหม่ คือ http://www.yourname.com วิธีการ redirect ที่ไม่ต้องการให้ชื่อ url เปลี่ยนเป็นอันใหม่ ผมไม่ทราบเหมือนกันว่าจะมีวิธีการทำที่ง่ายกว่าของผมหรือเปล่า ถ้าใครมีวิธีที่ง่ายกว่า ช่วยเมล์มาบอกด้วยก็แล้วกันครับ ในส่วนวิธีของผมนั้นใช้คำสั่ง frame  (อาจจะเรียกว่า frame redirect หรือ frame to URL) ดังต่อไปนี้ครับ :

<html>
<head>
<title>เพจนี้เป็นการ redirect ครับ</title>
</head>
<frameset cols=”*”>
<frame src=”http://www.anydomain.xxx/yourname”&gt;
</frameset>
</html>

โค้ดการ redirect ข้างบนนี้ชื่อของ url จะไม่ถูกเปลี่ยนไปเป็นชื่อใหม่ครับ

วิธีการเขียนโค้ดของ url redirect สำหรับ Web hosting
(บอกกล่าวกันก่อน–>โค้ดที่จะกล่าวถึงต่อไปนี้ผมเขียนขึ้นมาจากประสบการณ์ (เท่าที่จะแก้ปัญหาเฉพาะหน้าได้ครับ) ไม่ทราบเหมือนกันว่าที่เขาให้บริการ Web hosting จริง ๆ จะใช้เหมือนของผมหรือเปล่า ถ้ามีวิธีการที่ดีกว่านี้ช่วยเมล์มาบอกด้วยก็แล้วกัน)

จากที่ได้กล่าวมาแล้วนะครับว่าบริการ Web hosting นั้นตัว Webserver ที่ให้บริการนั้นจะถูกชี้มาจาก DNS Serer หลาย ๆ โดเมน ดังนั้นใน Web Server เองจะต้องมีการตรวจจับเสียก่อนว่า url ที่ผู้ใช้เรียกมาเป็น url อะไร เพื่อจะได้ชี้ไปยังตำแหน่งที่ถูกต้องจริง ๆ ของแต่ละโดเมน

ตัวอย่างที่ผมจะกล่าวต่อไปนี้มี 2 ตัวอย่าง ครับ ตัวอย่างแรก เป็นแบบที่ชื่อของ url ถูกเปลี่ยนเป็นชื่อใหม่ และตัวอย่างที่สอง เป็นแบบที่ชื่อของ URL ไม่ถูกเปลี่ยนเป็นชื่อใหม่ (frame redirect)

สมมุติว่า Web Server ถูกชี้มาจาก DNS Server จำนวน 2 โดเมน ดังนั้นไฟล์ที่เป็นไฟล์หลักในตำแหน่ง doucument root บน Web Server ต้องมีการตรวจสอบก่อนว่าผู้ใช้ต้องการเรียกไปยังโดเมนไหน โดยใช้ javascript เข้ามาช่วย และเมื่อรู้แล้วว่าผู้ใช้ต้องการเข้าสู่โดเมนไหน ก็จะต้องสั่งให้ไปยังตำแหน่งไฟล์จริง ๆ ของโดเมนนั้น ๆ ดังนี้ :

<html>
<head>
<script langquage=’javascript’>
    var url=document.location; //ตรวจสอบว่าผู้ใช้ต้องการเรียกเข้าสู่โดเมนไหน
    if ((url==”http://www.firstdomain.com&#8221;) || (url==”http://www.firstdomain.com/&#8221;))
       {
          window.location=”http://www.yourdomain.xxx/firstdomain&#8221;;
       }
    else if ((url==”http://www.seconddomain.com&#8221;) || (url==”http://www.seconddomain.com/&#8221;))
       {
          window.location=”http://www.yourdomain.xxx/seconddomain&#8221;;
       }
    else
       {
          window.location=”http://www.yourdomain.xxx/underconstruction.html&#8221;;
       }
</script>
</head>
</html>

และจากตัวอย่างเดียวกันนี้ถ้าต้องการไม่ให้ url ในช่อง address ของ browser ไม่มีการเปลี่ยนไปเป็นตำแหน่งที่แท้จริง ก็ทำได้ด้วยการใช้คำสั่ง frame เข้ามาช่วยดังต่อไปนี้ :

<html>
<script langquage=’javascript’>
url=document.location;
if ((url==”http://www.firstdomain.com&#8221;) || (url==”http://www.firstdomain.com/&#8221;))
{
document.write(“<head><title>www.firstdomain.com</title></head>”);
document.write(‘<frameset cols=”*”>’);
document.write(‘<frame src=”http://www.yourdomain.xxx/firstdomain”>&#8217;);
document.write(“</frameset>”);
}
else if (url==”http://www.seconddomain.com&#8221;) || (url==”http://www.seconddomain.com/&#8221;))
{
document.write(“<head><title>www.seconddomain.com</title></head>”);
document.write(‘<frameset cols=”*”>’);
document.write(‘<frame src=”http://www.yourdomain.xxx/seconddomain”>&#8217;);
document.write(“</frameset>”);
}
else
{
document.write(‘<frameset cols=”*”>’);
document.write(‘<frame src=”http://www.yourdomain.xxx/underconstruction.html”>&#8217;);
document.write(“</frameset>”);
}
</script>
</html>

การทำ URL Redirect โดยใช้ PHP
ถ้ามีความจำเป็นที่จะต้องทำการ Redirect โดยการใข้ภาษา PHP

ก็สามารถทำได้เช่นกัน นั่นคือใช้รูปแบบโครงสร้างของภาษาเป็นแบบเดียวกันกับที่กล่าวมาเพียงแต่เปลี่ยนคำสั่งดังตัวอย่างต่อไปนี้ ซึ่งเป็นแบบที่ address ไม่เปลี่ยนแปลง (frame to URL)

<?
switch ($SERVER_NAME){
             case “www.firstdomain.com”;{
                         echo ‘<frameset cols=”*”>’;
                         echo ‘<frame src=”http://www.yourdomain.xxx/firstdomain”>&#8217;;
                         echo “</frameset>”;
                         break;}
             case “www.seconddomain.com”;{
                        echo ‘<frameset cols=”*”>’;
                        echo ‘<frame src=”www.yourdomain.xxx/seconddomain”>’;
                        echo “</frameset>”;
                        break;}
             default;{
                        echo ‘<frameset cols=”*”>’;
                        echo ‘<frame src=”http://www.yourdomain.xxx/underconstruction.html”>&#8217;;
                        echo “</frameset>”;}
       }

มาถึงตอนนี้ผมหวังว่าท่านคงจะสามารถนำตัวอย่างที่ผมได้แนะนำไปประยุกต์ใช้ให้เหมาะสมได้แล้วนะครับ  มีคำแนะนำอะไรเพิ่มเติมก็ mail มาหาผมได้ครับ

Thank you

<html>
<head>
<META HTTP-EQUIV=”Refresh” CONTENT=”0;URL=http://www.yourname.com”>
</head>
</html>

ซึ่งถ้าเอา source code ข้างบนนี้ไปเป็นไฟล์หลักในตำแหน่ง document root บน Web Server ก็จะทำให้เว็บเพจถูก redirect ไปยัง http://www.yourname.com โดยทันที เพราะค่าของ CONTENT=0 แต่ถ้าต้องการหน่วงเวลาให้ผู้ใช้ได้อ่านข้อความบางอย่าง ก่อนการ redirect ก็สามารถทำได้ด้วยการกำหนดค่า CONTENT ไม่เป็น 0 ดังตัวอย่างต่อไปนี้ :

<html>
<head>
<META HTTP-EQUIV=”Refresh” CONTENT=”5;URL=http://www.yourname.com”>
</head>
<body>
<center>
เว็บไซต์ของเรามีการเปลี่ยนเป็นชื่อใหม่แล้ว การเข้ามาเว็บไซต์ของเราครั้งต่อไป กรุณาใช้ชื่อ
<a href=”http://www.yourname.com”>www.yourname.com</a&gt;
</center>
</body>
</html>

แต่วิธีการ redirect แบบข้างบนนี้จะทำให้ชื่อ url ตรงช่อง address ของ browser ถูกเปลี่ยนไปเป็นชื่อใหม่ คือ http://www.yourname.com วิธีการ redirect ที่ไม่ต้องการให้ชื่อ url เปลี่ยนเป็นอันใหม่ ผมไม่ทราบเหมือนกันว่าจะมีวิธีการทำที่ง่ายกว่าของผมหรือเปล่า ถ้าใครมีวิธีที่ง่ายกว่า ช่วยเมล์มาบอกด้วยก็แล้วกันครับ ในส่วนวิธีของผมนั้นใช้คำสั่ง frame  (อาจจะเรียกว่า frame redirect หรือ frame to URL) ดังต่อไปนี้ครับ :

<html>
<head>
<title>เพจนี้เป็นการ redirect ครับ</title>
</head>
<frameset cols=”*”>
<frame src=”http://www.anydomain.xxx/yourname”&gt;
</frameset>
</html>

โค้ดการ redirect ข้างบนนี้ชื่อของ url จะไม่ถูกเปลี่ยนไปเป็นชื่อใหม่ครับ

วิธีการเขียนโค้ดของ url redirect สำหรับ Web hosting
(บอกกล่าวกันก่อน–>โค้ดที่จะกล่าวถึงต่อไปนี้ผมเขียนขึ้นมาจากประสบการณ์ (เท่าที่จะแก้ปัญหาเฉพาะหน้าได้ครับ) ไม่ทราบเหมือนกันว่าที่เขาให้บริการ Web hosting จริง ๆ จะใช้เหมือนของผมหรือเปล่า ถ้ามีวิธีการที่ดีกว่านี้ช่วยเมล์มาบอกด้วยก็แล้วกัน)

จากที่ได้กล่าวมาแล้วนะครับว่าบริการ Web hosting นั้นตัว Webserver ที่ให้บริการนั้นจะถูกชี้มาจาก DNS Serer หลาย ๆ โดเมน ดังนั้นใน Web Server เองจะต้องมีการตรวจจับเสียก่อนว่า url ที่ผู้ใช้เรียกมาเป็น url อะไร เพื่อจะได้ชี้ไปยังตำแหน่งที่ถูกต้องจริง ๆ ของแต่ละโดเมน

ตัวอย่างที่ผมจะกล่าวต่อไปนี้มี 2 ตัวอย่าง ครับ ตัวอย่างแรก เป็นแบบที่ชื่อของ url ถูกเปลี่ยนเป็นชื่อใหม่ และตัวอย่างที่สอง เป็นแบบที่ชื่อของ URL ไม่ถูกเปลี่ยนเป็นชื่อใหม่ (frame redirect)

สมมุติว่า Web Server ถูกชี้มาจาก DNS Server จำนวน 2 โดเมน ดังนั้นไฟล์ที่เป็นไฟล์หลักในตำแหน่ง doucument root บน Web Server ต้องมีการตรวจสอบก่อนว่าผู้ใช้ต้องการเรียกไปยังโดเมนไหน โดยใช้ javascript เข้ามาช่วย และเมื่อรู้แล้วว่าผู้ใช้ต้องการเข้าสู่โดเมนไหน ก็จะต้องสั่งให้ไปยังตำแหน่งไฟล์จริง ๆ ของโดเมนนั้น ๆ ดังนี้ :

<html>
<head>
<script langquage=’javascript’>
    var url=document.location; //ตรวจสอบว่าผู้ใช้ต้องการเรียกเข้าสู่โดเมนไหน
    if ((url==”http://www.firstdomain.com&#8221;) || (url==”http://www.firstdomain.com/&#8221;))
       {
          window.location=”http://www.yourdomain.xxx/firstdomain&#8221;;
       }
    else if ((url==”http://www.seconddomain.com&#8221;) || (url==”http://www.seconddomain.com/&#8221;))
       {
          window.location=”http://www.yourdomain.xxx/seconddomain&#8221;;
       }
    else
       {
          window.location=”http://www.yourdomain.xxx/underconstruction.html&#8221;;
       }
</script>
</head>
</html>

และจากตัวอย่างเดียวกันนี้ถ้าต้องการไม่ให้ url ในช่อง address ของ browser ไม่มีการเปลี่ยนไปเป็นตำแหน่งที่แท้จริง ก็ทำได้ด้วยการใช้คำสั่ง frame เข้ามาช่วยดังต่อไปนี้ :

<html>
<script langquage=’javascript’>
url=document.location;
if ((url==”http://www.firstdomain.com&#8221;) || (url==”http://www.firstdomain.com/&#8221;))
{
document.write(“<head><title>www.firstdomain.com</title></head>”);
document.write(‘<frameset cols=”*”>’);
document.write(‘<frame src=”http://www.yourdomain.xxx/firstdomain”>&#8217;);
document.write(“</frameset>”);
}
else if (url==”http://www.seconddomain.com&#8221;) || (url==”http://www.seconddomain.com/&#8221;))
{
document.write(“<head><title>www.seconddomain.com</title></head>”);
document.write(‘<frameset cols=”*”>’);
document.write(‘<frame src=”http://www.yourdomain.xxx/seconddomain”>&#8217;);
document.write(“</frameset>”);
}
else
{
document.write(‘<frameset cols=”*”>’);
document.write(‘<frame src=”http://www.yourdomain.xxx/underconstruction.html”>&#8217;);
document.write(“</frameset>”);
}
</script>
</html>

การทำ URL Redirect โดยใช้ PHP
ถ้ามีความจำเป็นที่จะต้องทำการ Redirect โดยการใข้ภาษา PHP ก็สามารถทำได้เช่นกัน นั่นคือใช้รูปแบบโครงสร้างของภาษาเป็นแบบเดียวกันกับที่กล่าวมาเพียงแต่เปลี่ยนคำสั่งดังตัวอย่างต่อไปนี้ ซึ่งเป็นแบบที่ address ไม่เปลี่ยนแปลง (frame to URL)

<?
switch ($SERVER_NAME){
             case “www.firstdomain.com”;{
                         echo ‘<frameset cols=”*”>’;
                         echo ‘<frame src=”http://www.yourdomain.xxx/firstdomain”>&#8217;;
                         echo “</frameset>”;
                         break;}
             case “www.seconddomain.com”;{
                        echo ‘<frameset cols=”*”>’;
                        echo ‘<frame src=”www.yourdomain.xxx/seconddomain”>’;
                        echo “</frameset>”;
                        break;}
             default;{
                        echo ‘<frameset cols=”*”>’;
                        echo ‘<frame src=”http://www.yourdomain.xxx/underconstruction.html”>&#8217;;
                        echo “</frameset>”;}

Credit: http://www.compspot.net/index.php?option=com_content&task=view&id=40&Itemid=46

เกี่ยวกับ Sakda Dulyachart

Web Master บริษัท ธนทัตโซลูชั่น 69/756-7 ม.8 ถ.รัตนาธิเบศร์ ต.บางกระสอ อ.เมืองนนทบุรี จ.นนทบุรี 11000
ข้อความนี้ถูกเขียนใน Computer Programming คั่นหน้า ลิงก์ถาวร

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s