在URL的一部分中使用“/”的简洁方法是什么?

时间:2010-07-30 15:17:14

标签: ruby url webserver

在MVC框架中,我有一个带有“标识符”字段的模型。该字段可以是用户用作其唯一标识符的任何字段。然后,我在URL中使用此标识符字段来访问相关资源。

/people/<identifier>/

在一个这样的情况下,用户正在使用格式为00/000的标识符。您之间的快速将立即发现问题 - 我们如何知道哪个部分是标识符,哪个部分是行动?

显而易见的解决方案是使用URL转义(%2F是相关代码)。但是,这会混淆我的apache负载平衡代理以及我们的演示盒(运行乘客)上的应用程序服务器。虽然烦人地在本地开发服务器上工作正常。包含%2F的URL似乎会导致来自服务器的404错误(不是应用程序!)。

我正在寻找的是解决此问题的一般方法,同时保持整洁的URL。

导致此问题的堆栈是:Ruby 1.8.7,Merb 1.0.12,Apache负载平衡到生产中的瘦集群,演示服务器上的Passenger,以及在开发时使用未经处理的瘦。

2 个答案:

答案 0 :(得分:4)

最干净的方法是防止用户首先输入正斜杠字符。如果有必要支持这种格式,则无法使用URL转义。

答案 1 :(得分:1)

您可以随时使用自行编码替换/在您的识别字段中从未使用过的其他字符,然后在从URL中读取时将其转换回来。

例如:

http://yoursite/people/00/000

变为

http://yoursite/people/00-000