百科.dev
全部条目在线工具AI 编程趋势榜开源项目技术资讯提交条目
登录
< 返回工具列表
R

rack-rewrite

> 编程语言
开源

一个不依赖 Web 服务器的 Rack 中间件,用于定义和应用重写规则。在许多情况下,您可以使用 Rack::Rewrite 来代替编写 Apache mod_rewrite。

837 stars0 点赞2 次浏览
访问官网GitHub

工具介绍

一个不依赖 Web 服务器的 Rack 中间件,用于定义和应用重写规则。在许多情况下,您可以使用 Rack::Rewrite 来代替编写 Apache mod_rewrite。

rack-rewrite

一个用于定义和应用重写规则的机架中间件。在许多情况下,您 可以使用 rack-rewrite 来代替编写 Apache mod_rewrite 规则。

使用示例

  • Rack::Rewrite 用于站点维护和宕机
  • Rack::Rewrite + Google Analytics 可实现网站无缝切换
  • Rack::Rewrite 用于在 Heroku 上服务 gzipped 流程资产

使用详情

示例积分文件

ruby
# config.ru
gem 'rack-rewrite', '~> 1.5.0'
require 'rack/rewrite'
use Rack::Rewrite do
  rewrite   '/wiki/John_Trupiano',  '/john'
  r301      '/wiki/Yair_Flicker',   '/yair'
  r302      '/wiki/Greg_Jastrab',   '/greg'
  r301      %r{/wiki/(\w+)_\w+},    '/$1'
end

在 Rails 应用中的示例用法

Rails 3 或更低版本:

ruby
# config/application.rb
config.middleware.insert_before(Rack::Lock, Rack::Rewrite) do
  rewrite   '/wiki/John_Trupiano',  '/john'
  r301      '/wiki/Yair_Flicker',   '/yair'
  r302      '/wiki/Greg_Jastrab',   '/greg'
  r301      %r{/wiki/(\w+)_\w+},    '/$1'
end

如果您使用 config.threadsafe,则需要 insert_before(Rack::Runtime, Rack::Rewrite),因为当 config.allow_concurrency == true 时, Rack::Lock 不存在:

ruby
config.middleware.insert_before(Rack::Runtime, Rack::Rewrite) do
  rewrite   '/wiki/John_Trupiano',  '/john'
  r301      '/wiki/Yair_Flicker',   '/yair'
  r302      '/wiki/Greg_Jastrab',   '/greg'
  r301      %r{/wiki/(\w+)_\w+},    '/$1'
end
``` 或将 Rack::Rewrite 插入到堆栈的顶部:

Issues· 0 开放

查看全部 Issues在 GitHub 打开

暂无开放 Issues,或尚未同步最近议题。

> 标签

Ruby

暂无评论,来聊聊你的看法吧

> 工具信息

发布日期2026年8月1日
最后更新2026年9月17日
分类编程语言
定价开源

> 相关工具

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言