紀錄一下,因為一些以前的專案,客戶需要製作網址上面需要代入 店名跟商品名稱說是要幫助 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 判斷是路徑,大概就是遇到的問題筆記一下 :)