一个不依赖 Web 服务器的 Rack 中间件,用于定义和应用重写规则。在许多情况下,您可以使用 Rack::Rewrite 来代替编写 Apache mod_rewrite。
一个不依赖 Web 服务器的 Rack 中间件,用于定义和应用重写规则。在许多情况下,您可以使用 Rack::Rewrite 来代替编写 Apache mod_rewrite。
一个用于定义和应用重写规则的机架中间件。在许多情况下,您 可以使用 rack-rewrite 来代替编写 Apache mod_rewrite 规则。
# 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'
endRails 3 或更低版本:
# 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 不存在:
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,或尚未同步最近议题。