[C#] ASP.NET WebForm 中支援 SEO 友善的商品網址

2024-07-11

紀錄一下,因為一些以前的專案,客戶需要製作網址上面需要代入 店名跟商品名稱說是要幫助 SEO,雖然我記得好像 Google 對這得已經降低分數了

但是畢竟客戶說了,那我就是加上去


主要客戶 的商品網址會是 /product/{product_id}/{product_desc}

所以大概網址會是 https://sample.com/product/商品編號/商品敘述商品敘述,基本上商品 敘述那一段是沒有用到的主要也是要用到第一個

因為這是以前老的 ASP.net WebForm 專案 ,我們要先修改 Global.asax


Global.asax.cs:

//add using using System.Web.Routing; public class Global : System.Web.HttpApplication { protected void Application_Start(object sender, EventArgs e) { RegisterRoutes(RouteTable.Routes); } public static void RegisterRoutes(RouteCollection routeCollection) { // product/product_id routeCollection.MapPageRoute("PRODUCT", "product/{id}", "~/product.aspx", false, null, new RouteValueDictionary { { "id", ".*?" } }); // product/product_id/product_desc routeCollection.MapPageRoute("PRODUCT_DESC", "product/{id}/{desc}", "~/product.aspx", false, null, new RouteValueDictionary { { "id", ".*?" } }); } }


Product.aspx.cs 取直的部分

protected void Page_Load(object sender, EventArgs e) { var product_id = ""; product_id = Request["id"]; if (string.IsNullOrEmpty(id)) { if (Page.RouteData.Values["id"] != null) id = Page.RouteData.Values["id"].ToString(); } if (string.IsNullOrEmpty(id)) { Response.Redirect("/ProductList"); return; } //...


這邊要比較注意的,在 Response 中不需要在做 Server.UrlEncode 中文也可以支持,只是在拼湊網址的時候要避免再出現一個 / 建議先把 

/ 這個取代成- 之類的文字,不然會被 IIS 判斷是路徑,大概就是遇到的問題筆記一下 :)



當麻許的碎念筆記 2014 | Donma Hsu Design.