我是一名初级Web开发人员,以下问题仅仅是为了连接我脑中的几件新事物: RoR'routes'文件是Apache'mod_rewrite'模块的替代品吗?
提前感谢所有参与者。
答案 0 :(得分:0)
它的相似之处在于它是一个url模式列表,每个模式都有一些与之关联的规则。
主要区别在于路由是INTERNAL到Rails:mod_rewrite通常会为任何路由做出决定,然后提供文件,或者将请求传递给另一个代理来处理,因此可以被认为是请求管道中的独立进程。
另一方面,routes.rb可以被认为是在Rails中运行的东西,并决定哪个对象(对象通常是控制器)应该有一个调用它的方法,通过请求对象。也许这不是发生了什么,但它是这样的。 Rails就像一个黑盒子,请求进来,响应出来,路由在盒子里面。
所以,我想你可以说它是mod_rewrite的替代品,因为你可以只使用apache将所有请求传递给Rails并让Rails(使用routes.rb代码)将其弄清楚,而不是使用mod_rewrite。但这有点不同。
编辑:我刚读完这篇文章并意识到它很模糊。也许别人会给出一个更具体的答案:)答案 1 :(得分:0)
基本上,是的。
这两个工具的目的是根据请求的某些属性将HTTP请求映射到适当的操作。通常,这些属性是使用的HTTP方法(GET
,POST
,DELETE
等)和请求URI。虽然它有其他用途,但mod_rewrite
的典型用例是将不同的URL模式映射到不同的脚本。另一方面,routes.rb
将HTTP方法和URL模式("端点")映射到控制器方法(它有其他表达这些映射的方法,例如resource
方法)
主要区别在于mod_rewrite
总是在将控制权传递给客户端脚本之前将此路由逻辑作为Apache Web服务器的一部分执行。 routes.rb
设置由Rails内部执行的路由逻辑。但两者都达到了同样的目的。 Rails路由更具可移植性,因为您可以在使用Apache,nginx或rails服务器之间切换,而无需每次都从头开始重写路由逻辑。 Apache重写规则往往有点难以理解,因此如果您对Rails路由感到满意,请务必使用它。
答案 2 :(得分:0)
我会说不。它们是两个不同的组件,用于不同的目的。
您可以运行Rails应用程序,而无需使用mod_rewrite,甚至Apache。如果没有routes.rb文件,则无法运行rails应用程序。
Rails routes.rb文件负责一些不同的事情。它是生成资源的URL的地方。它也是一个可以安装引擎的地方。
打个比方,考虑一下: Routes.rb是负责在您的应用程序中构建道路的工作人员。 Mod_rewrite是一个橙色背心的人,告诉你这条路是死路一条,沿着绕道而行。