gpt4 book ai didi

html - 将旧内容(.html/.php 等)重新路由到 Ruby on Rails

转载 作者:搜寻专家 更新时间:2023-10-31 22:23:52 25 4
gpt4 key购买 nike

我已经切换到 Ruby on Rails,我目前的问题是重新路由RoR 中的旧内容,如 XXX/dummy.htmlXXX/dummy.php

什么才是最好的解决方案

  1. 隔离内容(XXX/onlyinstance.html)
  2. 具有内部结构的内容,如 XXX/dummy1.htmlXXX/dummy2.html

http://guides.rubyonrails.org/routing.html没有解释如何迁移旧内容。

注意:不能更改旧链接。该网站是托管的,不是我的自己的服务器。由于域没有改变,重定向它的解决方案似乎是不必要...应该有更好的解决方案。

编辑:我发现最好的解决方案实际上是按照 weppos 描述的方式重新路由。

于是在public目录下添加一个.htaccess文件并写

重写引擎开启
重定向永久/XXX.php http://XYZ/XXX

无论出于何种原因,RoR 不接受 routes.rb 中的重新路由...而 .html/.xml一切顺利,.php 不起作用。我还没有找出原因。因为 weppos 回答是最好的,我将奖励他 50 点赏金,但由于其他答案有效,我也会给他们投票。谢谢大家

最佳答案

您可以通过多种方式做到这一点。

最好和最有效的方法是使用前端网络服务器。您可以轻松设置一些配置,以便将所有旧 URL 重定向到新 URL。

对于 Apache,您可以使用 mod_aliasmod_rewrite

Redirect /XXX/onlyinstance.html /new/path
RedirectMatch ˆ/XXX/dummy([\d])+\.html$ /new/path/$1

这对于服务器和客户端来说都是最有效的方式,因为在服务器级别进行处理而无需初始化 Ruby 解释器。

如果您不能/不想利用服务器设置,您可以决定使用 Rails 本身。谈到性能,最有效的方法是使用 Rack middleware这比创建一个完整的 Controller / Action 要高效得多。

class Redirector
def self.call(env)
if env["PATH_INFO"] =~ %r{XXX/onlyinstance\.html}
[301, {"Content-Type" => "text/html", "Location" => "http://host/new/path/"}, "Redirecting"]
else
[404, {"Content-Type" => "text/html"}, "Not Found"]
end
end
end

还有一个Rack plugin called Redirect它为使用 Rack 中间件配置重定向提供了一个很好的 DLS。

只是一个脚注。我不会使用 routes.rb 创建额外的路由,因为你最终会复制你的站点 URL 并浪费额外的内存。

另见 Redirect non-www requests to www urls in Rails

关于html - 将旧内容(.html/.php 等)重新路由到 Ruby on Rails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2063892/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com