1

我有兴趣在网站上创建“短 URL”一段页面。但是,这不是传统意义上的“短 URL”,如 bit.ly,它将重定向到不同的目标 URL。我希望短 URL 成为最终目的地。

例如,这些 URL 之一可能是http://foo/a/Afjbg,当您导航到它时,它会停留在http://foo/a/Afjbg(IOW,http://foo/a/Afjbg在地址栏中对用户可见)。

如果是静态内容,我只会将页面和文件夹排列成这些名称。但是我将在网站上拥有的内容将从数据库动态驱动,因此每个页面都是动态生成的。所以内容看起来在逻辑上不同,但实际上本质上是相同的带有动态内容的 .aspx 页面。

这如何在 Microsoft 托管堆栈上实现?该平台是带有 ASP.NET 4 的 IIS 7。我认为有一种方法可以轻松设置它,但是对于 MS 托管堆栈来说是新手,我不知道 :)

4

3 回答 3

1

使用ASP.NET MVC 路由

它允许将任何 URL 模式路由到“页面”

例如

routes.MapRoute(
                "Default", // Route name
                "a/{id*}",   // Route anything to this controller
                new { controller = "Home", action = "Index", id = "" } // Parameter defaults
            );
于 2011-03-07T02:19:00.303 回答
1

它被称为URL 路由,并且 ASP.NET 从 3.5 版开始就原生支持它。这是一个来自 MSDN 的 C# 示例。波浪形括号将 URL 路径的各个块作为参数发送到~/categoriespage.aspx.

protected void Application_Start(object sender, EventArgs e)
{
    RegisterRoutes(RouteTable.Routes);
}

public static void RegisterRoutes(RouteCollection routes)
{
    routes.MapPageRoute("",
        "Category/{action}/{categoryName}",
        "~/categoriespage.aspx");
}
于 2011-03-07T02:15:40.513 回答
0

您可以使用大多数基于 .NET 的CMS博客引擎,只需将slug 设为短字符串。

细节:

在大多数 CMS 和博客引擎中,该软件将 slug 与帖子标题分开。如果您不指定 slug,它将为您自动生成一个...例如,标题为“Hello world”的帖子可能会生成一个“hello_world”的生成 slug。但是您可以输入自己的 slug 为“Afjbg”。

或者,如果您想要更复杂一点,我上面引用的两个程序都是开源的——这意味着您可以轻松地修改 slug 生成组件以自动生成这些小字符串。

您可以尝试使用 ASP.NET 路由,但在不了解您正在使用或构建的应用程序的情况下,这可能不容易解决(例如,某些 CMS 引擎可能已经使用路由,或者使用不支持的老式处理程序)玩得很好)。

于 2011-03-07T02:14:26.603 回答