我希望我的网站为动态内容创建搜索引擎优化链接(而不是通过查询字符串定位数据)。是:
mysite/SomeModifiableNname.aspx
而不是
mysite/DynamicContent.aspx?entryID=2345
除了重定向请求的智能404处理程序或IIS中的自定义MIME类型处理程序之外,ASP.NET中是否有很好的解决方案?
页面文件名必须能够在运行时更改。
发布于 2018-08-16 08:43:20
可以使用HttpHandler,参考:http://codebetter.com/blogs/jeffrey.palermo/archive/2005/08/10/130532.aspx。
发布于 2018-08-16 10:15:45
在Global.asax(或通过HttpModule)中,监听BeginRequest事件并在那里应用Context.Rewrite路径:
void Application_BeginRequest(object sender, EventArgs e)
{
string fullOrigionalpath = Request.Url.ToString();
if (fullOrigionalpath.ToLower().Contains("/Games".ToLower()))
{
Context.RewritePath("Default.aspx?id=Games");
}
}
然后,在处理这些请求的页面的OnPreInit方法上,需要再次应用重写路径,以便PostBack能够正常工作:
protected override void OnPreInit(EventArgs e)
{
base.OnPreInit(e);
if (Request.QueryString["id"] == null)
return;
if (Request.QueryString["id"].ToLower().Equals("games"))
Context.RewritePath("Games", "", "id=Games");
}
许多URL重写模块可以更好地工作的关键是路径可以是动态的。也就是说,创建的URL可以是数据驱动的。
https://stackoverflow.com/questions/-100000582
复制相似问题