Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 是RoR';路线';为Apache';mod#u rewrite';模块?_Ruby On Rails_Apache - Fatal编程技术网

Ruby on rails 是RoR';路线';为Apache';mod#u rewrite';模块?

Ruby on rails 是RoR';路线';为Apache';mod#u rewrite';模块?,ruby-on-rails,apache,Ruby On Rails,Apache,我是一名刚起步的web开发人员,下面的问题只是为了连接我大脑中的几个新事物: RoR“routes”文件是否是Apache“mod_rewrite”模块的替代文件 提前感谢大家的参与。这是一个类似的url模式列表,每个模式都有一些与之相关的规则 主要区别在于路由是Rails内部的:mod_rewrite通常会对任何路由做出决定,然后提供一个文件,或者将请求传递给另一个代理来处理,因此可以将其视为请求管道中的一个独立进程 另一方面,routes.rb可以被认为是在Rails内部运行的东西,它决定哪

我是一名刚起步的web开发人员,下面的问题只是为了连接我大脑中的几个新事物: RoR“routes”文件是否是Apache“mod_rewrite”模块的替代文件


提前感谢大家的参与。

这是一个类似的url模式列表,每个模式都有一些与之相关的规则

主要区别在于路由是Rails内部的:mod_rewrite通常会对任何路由做出决定,然后提供一个文件,或者将请求传递给另一个代理来处理,因此可以将其视为请求管道中的一个独立进程

另一方面,routes.rb可以被认为是在Rails内部运行的东西,它决定哪个对象(其中对象通常是控制器)应该有一个通过请求对象调用的方法。也许这并不是真正发生的事情,但它是这样的。Rails就像一个黑匣子,一个请求进来,一个响应出来,routes在黑匣子里

所以,我想你可以说它是mod_rewrite的替代方案,因为不用mod_rewrite,你可以让apache将所有请求传递给Rails,让Rails(使用routes.rb代码)解决它。但这是另一回事

编辑:我刚刚重读了这篇文章,意识到它相当模糊。也许其他人会给出更具体的答案:)

基本上,是的

这两种工具的目的都是基于请求的某些属性,将HTTP请求映射到适当的操作。通常,这些属性是使用的HTTP方法(
GET
POST
DELETE
,等等)和请求URI。尽管它还有其他用途,
mod_rewrite
的典型用例是将不同的URL模式映射到不同的脚本<另一方面,code>routes.rb将成对的HTTP方法和URL模式(“端点”)映射到控制器方法(它有其他表达这些映射的方式,例如
resource
方法)


主要区别在于,
mod_rewrite
总是在将控制传递给客户端脚本之前,作为Apache web服务器的一部分执行此路由逻辑<代码>路由.rb设置由Rails在内部执行的路由逻辑。但两者都实现了同样的目标。Rails路由更具可移植性,因为您可以在使用Apache、nginx或Rails服务器之间切换,而无需每次从头重写路由逻辑。Apache重写规则往往有点难以理解,因此如果您对Rails路由感到满意,请务必使用它。

我会说不。它们是两个不同的组件,用于不同的目的

您可以让Rails应用程序运行,而无需使用mod_rewrite,甚至Apache。如果没有routes.rb文件,则无法运行rails应用程序

Rails routes.rb文件负责一些不同的事情。它是生成资源URL的地方。它也是一个可以安装发动机的地方

例如,考虑一下: Routes.rb是负责在应用程序中构建道路的工作人员。 Mod_rewrite是一个穿着橙色背心的人告诉你这条路是一条死胡同,走弯路