1

所以,我知道这里和互联网上有很多这样的主题。但是大多数文章/问题都是指“静态” url 重写,例如:

www.site.com/products.aspx?category=Books

所以他们将其重写为

www.site.com/Products/Books

没关系,但我需要别的东西。

该网站就像一个CMS,它有不同类型的内容。

现在要阅读标题为“StackOverflow 如何帮助您进行开发”的文章,您需要访问如下所示的 URL。

www.site.com/viewContent.aspx?Id=1234

我想要达到的是:

www.site.com/Content/Articles/how-to-stackoverflow-helps-you-in-your-development

据我了解,我需要在其中涉及 ASP .NET,因为首先我需要检索文章(当然是它的标题),然后重写 URL。

但是我想知道如果我转到那个 URL,ASP .NET 将如何知道如何获取那篇文章,它不包含任何地方的 id ......所以也许我可以接受类似的东西

www.site.com/Content/Articles/1234/how-to-stackoverflow-helps-you-in-your-development

我真的有点迷路了..我从来没有做过任何 URL 重写,我用谷歌搜索了很多,我找不到做我想做的事的方法。也许我想要的不叫url重写???我不知道...

该站点在 Windows 2003 Server、IIS6、ASP .NET 3.5 SP1 下运行当然,我需要一个免费的解决方案,不能在 ISAPI 模块上花费 100 美元(此外我不知道这是否能满足我的需要) .

感谢所有人,如果这是一个重复的问题,我很抱歉,但我找不到它。

编辑:我不需要支持非 ASP.NET 文件(jpg、gif 等),不需要重写。我只需要重写 viewContent 页面以将内容标题包含到 URL 中。

4

5 回答 5

5

您可以使用 ASP.Net 3.5 sp1 附带的新路由来获得干净的 URL。

这甚至可以在 Web 表单中完成,而不仅仅是 MVC。(我自己做过)。有关如何设置它的示例,请参见此处此处。

您可以将文章的 Id 和 URL 中的标题放在 URL 中,并使 Id 成为用于搜索文章的真实参数。这就是 SO 所做的。尝试删除 URL 的问题,它会将您带到同一个地方。

即使您不使用 ID,您也可以将文章的标题“how-to-stackoverflow-helps-you-in-your-development”传递给您的数据库并根据标题检索文章。

关于 IIS 6,它有点棘手,因为默认情况下 IIS 6 不能处理无扩展名的 URL。

有一些解决方法:

  1. 使用 IIS 中的通配符映射将所有请求映射到 Asp.Net
  2. 将 Default.aspx 放在网址的末尾

有关其他可能的解决方案,请参阅此帖子

尽管如果您站点中的所有内容(甚至是图像、css、.html ...)在一个小型站点中通过 Asp.Net,第一个解决方案可能会出现性能问题,但这并不重要。我已经使用了这种方法,并且没有任何重大的性能问题。我认为这是最简单的解决方案。这是我用它建立的网站

我希望这有帮助。

于 2009-06-12T17:28:58.823 回答
2

这个是免费的,我用过,效果很好: http: //www.codeplex.com/IIRF

好消息是它可以处理没有扩展名的 url(即 .aspx、.html 等)

于 2009-06-12T17:16:12.570 回答
1

您可以使用 ASP.NET 路由来实现这一点。您可以使用 ASP.NET MVC 和 Webforms 来实现这一点。无需对 IIS 做任何事情。

检查以下链接

http://www.4guysfromrolla.com/articles/051309-1.aspx#postadlink

我在 1 小时内使用上述链接中的详细信息在我的 Web 应用程序中进行了 URL 路由。学习起来非常简单。他们也提供了示例代码。它将帮助您轻松完成

您可以使用标题检索内容的 Id。但标题应该是唯一的。当用户从文本框中取出鼠标时,您可以使用 ajax 检查标题是否已经存在。

于 2009-08-12T16:27:14.550 回答
0

最简单的方法是在您当前的 webforms 项目中添加一个 http 模块。

http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx

这向您展示了它的基础知识,但它可以很容易地扩展,以便您想要重写的页面是从数据库中获取的,甚至是动态构建的。

于 2009-08-12T16:11:48.483 回答
-1

ASP.net MVC是你的朋友

stackoverflow 使用 MVC

于 2009-06-12T17:16:11.617 回答