Click Here Trigger

Search engine friendly URL ด้วย ASP.NET กับ C#

VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)
VN:F [1.9.22_1171]
Rating: 0.0/10 (0 votes cast)

Search engine friendly URLs using ASP.NET (C#.NET)มาทำ Search engine friendly URLs ด้วย .NET เทคโนโลยีทุกวันนี้ในหลายองค์กรและหลายบริษัทและหลายเว็บไซต์ที่จัดทำเพื่อเผยแพร่ข่าวสารหรือข้อมูลนั้น Information หรือ สารสนเทศทางด้าน IT จากที่เป็น Static Page HTML, XHTML ก็มาสนใจในรูปแบบ Dynamic Content หรือการ Query ข้อมูลจาก Database ที่ใช้กันซึ่งเวลาดึงข้อมูลก็จะ แสดงผลบน File เดียวแต่ต้องระบุ Parameter ที่เป็นตัวเชื่อม Primary Key ของ ตารางข้อมูลนั้นๆดังเช่น

http://www.mydomain.com/?pageid=4

นั่นคือ Content จะแสดงผลผ่านหน้าเว็บ .aspx โดยดึงชุดเนื้อหา จากตาราง เนื้อหาที่มี Field ของ Primary Key คือ pageid =13 ครับ ซึ่งทาง LINUX นั้นมีการจัดการ .htaccess ไฟล์ให้ Support ฟังก์ชั่น mod_rewrite ของ LINUX เพื่อแปลง parameter ให้หายไปและทำ URLs ให้สอดคล้องกับ เนื้อหาเพื่อให้เหมาะกับ Search Engine Optimizered เช่นลบเครื่องหมายจำพวก ?, &, %, +, =, $, cgi-bin, .cgi. Hence เป็นต้น

แล้วทำถ้า Hosting Server เป็น Windows ล่ะ การ Develope ต้องใช้ ASP.NET ทำ mod_rewrite ก็ไม่ได้ จะต้อง
ทำยังไงดี ก็เลยหาวิธีมาแก้ให้เป็น URLs Friendly for SEO อย่างน้อยๆ ก็ยังมี link ที่เข้าท่าอยู่

มาเริ่มกันครับเป้าหมายของเราคือ

http://www.mydomain.com/?pageid=4

เปลี่ยนเป็น

http://www.mydomain.com/page4.aspx

ดูๆแล้ว น่าจะเป็นอะไรที่เข้าใจง่าย อย่างแรกเลยครับสร้างไฟล์ Global.asax แก้ไขส่วนของ event

Application_BeginRequest

ครับโดยแก้ไขดัง code ด้านล่าง

protected void Application_BeginRequest(object sender, EventArgs e)
{
    HttpContext incoming = HttpContext.Current;
    string oldpath = incoming.Request.Path.ToLower();
    string pageid; // page id requested

    // Regular expressions to grab the page id from the pageX.aspx
    Regex regex = new Regex(@"page(d+).aspx",  RegexOptions.IgnoreCase |
        RegexOptions.IgnorePatternWhitespace);
    MatchCollection matches = regex.Matches(oldpath);

    if(matches.Count > 0)
    {
        // Extract the page id and send it to Process.aspx
        pageid = matches[0].Groups[1].ToString();        
        incoming.RewritePath("Process.aspx?pageid=" + pageid);
    }
    else
        // Display path if it doesn’t containt pageX.aspx
        incoming.RewritePath(oldpath        
    }
}

จาก code ด้านบนนั้น URLs ที่มี parameter จะถูกลดรูปเหลือ pageX.aspx (X แทนที่ pageid 1,2,3,4,…) ครับ
ลองเทสดูก็ได้ครับ

<%
    string pageid = Request.QueryString["pageid"];
    // Create the page content based on this pageid taken here
%>

น่าจะพอใช้งานได้จริงนะครับห

Contributors: Banyapon Poolsawasd


Social Media Marketing และที่ปรึกษาด้านการตลาดออนไลน์ มีงานวิจัยด้านนวัตกรรมออนไลน์ และโครงงานด้านเทคโนโลยี Social Integration และ Augmented Reality ร่วมทั้งในประเทศ และต่างประเทศ รวมถึงตำแหน่งอาจารย์พิเศษ ประจำมหาวิทยาลัยชั้นนำ และวิทยากรพิเศษ นักวิจัย นักคิด

Comments

Press Esc to close