1

我希望我的网站为动态内容创建搜索引擎优化的链接(而不是通过查询字符串定位数据)。所以:

mysite/SomeModifiableNname.aspx
代替

mysite/DynamicContent.aspx?entryID=2345
.

除了重定向请求的智能 404 处理程序或 IIS 中的自定义 mime 类型处理程序之外,在 ASP.NET 中是否有一个很好的解决方案?
请记住,页面文件名必须能够在运行时更改。

4

4 回答 4

3

您可以使用HttpHandler,如此处所示

于 2009-01-20T18:40:25.050 回答
2

这是一个广泛的主题,通常称为 URL 重写......

有几种方法可以做到这一点。我建议查看 IIS 重写模块。

您可能还应该调查为 MVC 开发并在 ASP.NET 3.51 中可用的 URL 路由功能

更新:我希望我能更多地了解你的意图。最后一句话让我很困惑。

于 2009-01-20T18:41:39.650 回答
0

我过去用 UrlRewrite.Net 做过这个。在 IIS7 中也有一个内置的工具

于 2009-01-20T19:19:35.813 回答
0

感谢大家的想法。根据提供的信息,我发现了我认为需要的解决方案:

在 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 方法上,需要再次应用重写路径,以便 PostBacks 能够正常工作:

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 可以是数据驱动的。

于 2009-01-21T13:45:27.017 回答