如何在IIS6下对SEO友好的现有ASP .NET 3.5 Web应用程序

时间:2009-06-12 17:14:26

标签: asp.net iis seo url-rewriting url-routing

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

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。

但我想知道如果我去那个网址,ASP .NET将如何知道如何获取该文章,它不包括任何地方的id ... 所以也许我可以接受像

这样的东西
www.site.com/Content/Articles/1234/how-to-stackoverflow-helps-you-in-your-development

我有点迷失在这里..我从来没有做任何URL重写,我已经google了很多,我找不到办法做我想要的。也许我想要的不是叫url重写???我不知道......

该网站在Windows 2003 Server,IIS6,ASP .NET 3.5 SP1下运行 当然,我需要一个免费的解决方案,不能在ISAPI mod上花费100usd(除了我不知道这是否会做我需要的)。

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

编辑:我不需要支持nonASP.NET文件(jpgs,gifs等)不需要重写。我只需要重写viewContent页面,将内容标题包含在URL中。

5 个答案:

答案 0 :(得分:5)

您可以使用ASP.Net 3.5 sp1附带的新Routing来获得干净的网址。

这甚至可以在Web表单中完成,而不仅仅是MVC。 (我自己做过)。有关如何设置的详细信息,请参阅herehere

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

即使您不使用Id,您也可以将文章的标题“如何在堆栈中帮助您 - 帮助您在开发中”传递给您的数据库,并根据标题检索文章。< / p>

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

有一些解决方法:

  1. 使用IIS中的通配符映射将所有请求映射到Asp.Net
  2. 将Default.aspx放在网址的末尾
  3. 有关其他可能的解决方案,请参阅此post

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

    我希望这会有所帮助。

答案 1 :(得分:2)

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

好处是它会处理没有扩展名的url(即.aspx,.html等)

答案 2 :(得分:1)

您可以使用ASP.NET路由实现此目的。您可以使用ASP.NET MVC以及Webforms执行此操作。不需要对IIS执行任何操作。

检查以下链接

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

我在1小时内通过上述链接的详细信息在我的网络应用程序中进行了URL路由。这很容易学习。它们也提供了示例代码。它将帮助您轻松完成

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

答案 3 :(得分:0)

最简单的方法是将http模块添加到当前的webforms项目中。

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

这将向您展示它的基础知识,但它可以轻松扩展,以便您想要重写的页面取自数据库,甚至可以即时构建。

答案 4 :(得分:-1)

ASP.net MVC是你的朋友

stackoverflow使用MVC