【发布时间】:2012-01-18 15:44:57
【问题描述】:
我最近重命名了我(由 sinatra 支持的)网站上的一些页面。我正在使用以下路线将旧名称重定向到新名称,我已将其放在任何其他名称之前:
##
# Renamed pages
#
get '/venue' do redirect '/the+wedding/reception'; end
get '/accommodation' do redirect '/out+of+town+info/accommodation'; end
get '/things+to+do' do redirect '/out+of+town+info/things+to+do'; end
前两个工作正常,但第三个结果是 404。这第三个路由中的 + 有什么特别之处吗?我在文档中找不到任何有用的东西,而且我似乎无法以一种使路线工作的方式逃避它们。
我一直在用curl测试,前两个按预期使用304,第三个显示正常的404页面。
我使用的是 Debian 中打包的 sinatra 1.2.6。
【问题讨论】:
-
您使用的是哪个版本的 Sinatra?
-
感谢 Holger,我已经更新了问题:1.2.6。我会试试 gem 并更新一下。
-
在 1.3.2 上按预期工作。我将切换到我服务器上的 gem(下次检查错误)。谢谢。
-
:) 我曾经遇到过类似的错误,这导致康斯坦丁烦扰他,谢天谢地,他在 1.3.0 中修复了它 :) 供将来参考,它已在 github.com/sinatra/sinatra/pull/271 中修复
-
@hmans,这是表单提交中空格的编码方式,而不是它在 URL 路径中的编码方式(即 %20 - 请参阅 stackoverflow.com/questions/1634271/…)。它受到明确支持,在 URL 中未转义,并且是经过深思熟虑的选择。
标签: ruby http-headers routes sinatra