2010-06-24 38 views
0

当然,传统的方法是让文件系统和您的网络服务器解决URL问题。 EG,www.example.com/index.html - > /var/www/public_html/index.html使用基于文件的URI或不使用

但是我注意到了一个趋势,在这个趋势中,与让web服务器为你做映射,你自己做(例如,Rails和它的路由配置文件,所以/ index被映射到app/controllers/index.rb或者你将它设置为)。

现在我意识到后一种方法的优点之一是,如果服务器启动时无法执行内容或w/e,任何人都无法查看您的源代码;但对于编译的CGI,这显然不是问题。

是否有任何真正的原因(抛开REST相关的想法)来自己解析URL? (我有一种感觉,它比让Apache做它慢)

回答

1

自己定义路由的事情(作为您提供的ruby示例)是URI不必指向实际文件。在MVC框架的情况下,他们只是指向行动。您可以通过同一控制器处理多个操作,该控制器位于同一个类中,并位于同一个文件中。这是路由给你的nice (ASP.NET MVC) example(特别看看搜索部分)。

扩展名是URI不指向文件,它们指向资源。这些资源可以由文件,数据库表或一些穷人支持,他们可以手动为每个请求写出html,并使用莫尔斯电码轻敲0和1。

+0

当然。但是,当然,除了记忆能力,让example.com/resource?id=55有什么问题。事实是,大多数人无论如何都不会记住资源ID。 – 2010-06-24 01:11:56

+0

@aharon:[Better SEO](http://weblogs.asp.net/scottgu/archive/2010/04/20/tip-trick-fix-common-seo-problems-using-the-url-rewrite-extension的.aspx)。你说得对,人们不太可能记得'resource?id = 55',但他们很可能记得'文件/婚礼客人名单'。 – R0MANARMY 2010-06-24 01:19:32

3

使URL存在代码的最大原因是它允许没有文件支持的URL响应查询。您可能希望在磁盘上为每个可能想要提供的URL指定一个CGI,但您可能不需要。你可以做/products.cgi?productid=12,但一个更漂亮的人使用的网址是/products/12

+0

虽然漂亮的好处是什么?无论如何,人们不太可能通过网址尝试访问特定产品,对吗? – 2010-06-24 01:13:45

+0

@aharon:不,但您可能希望向网址添加数据,例如查看此问题的网址。标题是URL的一部分。当您向某人发送链接时,他们立即知道他们点击该链接的期望。 – R0MANARMY 2010-06-24 01:16:45