วันพฤหัสบดีที่ 12 กรกฎาคม พ.ศ. 2555

[SMF] สร้างหน้าพักสำหรับลิงค์ไปนอกเว็บ Redirectpage

ไปตามบอร์ดใหญ่ๆ เวลามีลิงค์ให้คลิกไปยังเว็บอื่น ก่อนไปถึงเว็บนั้นๆ เราจะเจอหน้าหนึ่งดักไว้ก่อนเสมอ และจะมีข้อความว่า ..
"คุณกำลังลิงค์ไปนอกเว็บยังเว็บไซต์ www.xxxx.com" 
หรือบางเว็บอาจแอบแปะโฆษณาในหน้าตรงนี้ด้วยและอาจใช้ข้อความอย่างอื่น แต่ก็ใกล้เคียงแบบนี้ 
หน้านี้เรียกว่า "หน้าพัก" หรือ Redirect Page 

หลายคนหรือแม้แต่ผมเองก็สงสัยว่ามันมีประโยชน์อะไรหรือไอ้หนักพักเนี่ยะ โคตรเกะกะลูกกะตา เวลาจะคลิกไปยังเว็บอื่นมันยังมาดักเรา 5-10 วินาที เสียเวลานะเว้ยเฮ้ย!!

ประโยชน์ของมันก็คือ เพื่อไม่ให้มี link ออกไปจากหน้ากระทู้โดยตรงเพื่อผลดีต่ออันดับใน google ดังนั้นการที่สมาชิกจะใช้วิธีใส่ลิ้งในลายเซ็นหรือทำลิ้งในกระทู้เพื่อหวังผล back link ก็จะไม่มีผลต่อ อันดับใน google เห็นประโยชน์ของมันแล้วใช่มั้ยครับ ถ้าเห็นว่าเข้าท่าดี งั้นมาลงมือทำกันเลยดีกว่า

วิธีทำมี 2 แบบให้เลือกครับ
วิธีแรก ง่ายๆเลยไปหามอดมาติดในบอร์ดซะ ตามลิงค์นี้เลย http://custom.simplemachines.org/mods/index.php?mod=2562 
 วิธีลงไม่ยุ่งยากเท่าไรคล้ายมอดอื่นๆทั่วไป มีหน้าสำหรับ settings ก็ลองไปเซตๆ ติ้งๆ ดู ผมไม่พูดถึงรายละเอียด

ส่วนอีกวิธีหนึ่ง สำหรับคนที่ไม่แฮปปี้กับการติดตั้งมอด เพราะต้องให้เราไป set chmod ไฟล์โน้นไฟล์นี้ให้เป็น 777 ยุ่งยากนัก ขอแบบเมนวลๆ
ทำตามวิธีนี้เลยครับ (อ้างอิงจาก thaiseoboard.com)

1. เปิดไฟล์ Sources/Subs.php มองหาโค๊ด
 // If it wasn't changed, no copying or other boring stuff has to happen!
if ($data != substr($message, $last_pos, $pos - $last_pos + 1))
{
 $message = substr($message, 0, $last_pos) . $data . substr($message, $pos + 1);
 // Since we changed it, look again incase we added or removed a tag. But we don't want to skip any.  
  $old_pos = strlen($data) + $last_pos - 1;
  $pos = strpos($message, '[', $last_pos);
  $pos = $pos === false ? $old_pos : min($pos, $old_pos);
  }
 }

 จากนั้นเติมโค๊ดในบรรทัดถัดมา..
 $_SERVER['svz']['go'] = '/go.php?'; 

$message = preg_replace(array('~\[direct\](.*?)\[/direct\]~','~\[direct\=(.*?)](.*?)\[/direct\]~'),array('[iurl=$1]$1[/iurl]%svz%2','[iurl=$1]$2[/iurl]%svz%2'),preg_replace_callback('~\[url=(.*?)\](.*?)\[/url\]~',create_function('$m','$go=$_SERVER[\'svz\'][\'go\'];$v=@parse_url($m[1]);return (!preg_match(\'~^\'.$go.\'~\',$m[1])&&$_SERVER[\'HTTP_HOST\']!=$v[\'host\'])?\'[url=\'.$go.$m[1].\']\'.$m[2].\'[/url]%svz%1\':\'[url=\'.$m[1].\']\'.$m[2].\'[/url]\';'),preg_replace('~\[url\](.*?)\[/url\]~','[url=$1]$1[/url]',$message)));

 $message = str_replace (array('%svz%1', '%svz%2'), array(' [pr]', ' [direct]'), $message);

สิ่งที่ต้องตระหนักให้มากๆคือไฟล์ go.php ต้องอ้างอิงพาธให้ถูกต้องนะครับ 
อ้างอิงถูกต้องหรือไม่อยู่ที่คุณว่าจะเก็บไฟล์ go.php ไว้ที่ไหน
คำถามที่ตามมาคือไฟล์ go.php ควรมีอะไรบ้างในนั้น
อะ ผมยกไฟล์ go.php ให้เลยแบบนี้นะ

<html>
<head>
<meta http-equiv="Content-Language" content="th">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<div align="center">
<p>
<font color="#0000FF">
<a href='<?php echo $_REQUEST['url']; ?>' rel="nofollow"><?php echo $_REQUEST['url']; ?></a></span></font></p>
<script language="javascript"> //setTimeout('document.RedirectX.submit()', 1000); setTimeout('top.location.href="<?php echo $_REQUEST['url']; ?>"', 5000); </script>
<br>
<font color="#008000">เรากำลังพาท่านไปยังหน้าที่ต้องการ.. กรุณารอสักครู๋!</font> <br>
 </div>
 </body>
 </html>

เสร็จแล้วครับ ลองเอาไปประยุกต์ใช้ดู ขัดข้องสงสัยประการใด ..โพสต์ถามได้นะครับ

ไม่มีความคิดเห็น:

แสดงความคิดเห็น