网址重写与路由

Posted

技术标签:

【中文标题】网址重写与路由【英文标题】:Url Rewriting vs. Routing 【发布时间】:2010-10-29 06:47:20 【问题描述】:

我正在制作一个新的 asp.net 网页表单网站,并想美化我的网址 - 我想接受一个像“www.mysite.com/1-2,3”这样的网址并将其转为一个像这样“www.mysite.com/page.aspx?a=1&b=2&c=3”。就性能易于维护而言,哪个选项最适合此任务 - IIS7 Url Rewriting 或 Routing。顺便说一句,我打算使用中等信任的共享主机 IIS7,也许是 6。

过去我使用 php 的 mod_rewrite,对此我很满意,但现在整个网站都被翻译成 ASP.NET,我不知道该选择哪个选项。

PS - 我已经阅读了 this 和 this,但是对于我的问题来说还不够清楚。

【问题讨论】:

很好的区别文章。 coderjournal.com/2010/03/difference-between-routing-rewriting 【参考方案1】:

我会为使用路由做一个强有力的论据。它将请求资源解析逻辑保留在您的应用程序中,因此您可以在需要时轻松添加依赖于应用程序的逻辑,并且无需在应用程序和单独的配置资源之间保持同步。

路由works great with traditional webforms。

URL 重写通常(但不总是)是对问题的补偿,而不是解决方案 - 服务器软件和框架仍然围绕代表物理资源的旧网页概念构建。页面。但是,网络应用程序应该react to requests as commands;但只是相对较新的现代 Web 框架才开始原生支持该模型。路由是这些发展之一。

【讨论】:

【参考方案2】:

我强烈建议使用路由, 事实上,它会在下一个版本的框架中与 webforms 更加集成。 由于缺乏路由,URL 重写更像是一种“hack”。如果您已经有一个想要“发光”的项目,那么 url 重写就可以了。

但是当从头开始时,我肯定会使用路由。

路由隐藏了您的应用程序结构,让您更多地考虑您的网址,作为您想要显示的内容的路径,而不是带有参数的某些页面的路径。 并且您不必在更改内容时跟踪两件事,就像重写一样。

更多内容在this article

【讨论】:

【参考方案3】:

IIS 5/6 使用 ISAPI 过滤,这基本上相当于 IIS 的 mod_rewrite。听说IIS7的url重写比ISAPI容易管理和配置。

【讨论】:

【参考方案4】:

这取决于您使用的是经典的 ASP.Net 还是新的 MVC 框架。我对 MVC 框架没有任何经验,但听起来它开箱即用地支持您正在寻找的东西。

在经典的 ASP.Net 方面,我们目前正在使用一个名为 ISAPI_Rewrite 的 IIS 扩展。它的行为类似于 Apache 的 mod_Rewrite,并且它们有一个免费版本,您可以使用它,它具有付费版本的大部分功能(100 美元)。

【讨论】:

今天学到了很多关于 MVC 的知识,用这个框架“美化” url 似乎超级容易 路由是独立于 MVC 的实体。 MVC 只是使用路由,就像 WebForms 一样。 没有“经典”asp.net 或 MVC 这样的东西......有 WebForms,然后有 MVC,它们都建立在 asp.net 之上!

以上是关于网址重写与路由的主要内容,如果未能解决你的问题,请参考以下文章

烧瓶重写网址

网址重写 - 这会导致安全问题吗?

Angularjs路由与django的网址

旧网址的网址重写不起作用

如果文件名减去ext,则覆盖.htaccess url重写行为。与网址相同

颤振如何与单页网页和不同的路由网址一起工作?