Pylons 路由中的尾斜杠

7 投票
3 回答
1779 浏览
提问于 2025-04-11 09:30

在最新版本的Routes(1.10)中,如何处理URL末尾的斜杠问题是最好的方法?我现在使用的方式显然不够简洁:

map.connect('/logs/', controller='logs', action='logs')
map.connect('/logs', controller='logs', action='logs')

我觉得开启最小化功能可能可以解决这个问题,但我听说在新版本的Routes中这个功能是被禁用的,可能是有原因的。不幸的是,文档似乎没有跟上Routes的发展,所以我找不到好的资源来参考。有没有什么想法?

3 个回答

2

这个链接 http://www.siafoo.net/snippet/275 里有一段简单的中间件代码,它的作用是去掉请求末尾的斜杠。这个主意很聪明,我在看到这个之后,对WSGI应用中的中间件概念理解得更清楚了。

16

下面这段代码作为最后一个路由添加进来后,对我来说是有效的:

map.redirect('/*(url)/', '/{url}',
             _redirect_code='301 Moved Permanently')
7

解决这个问题有两种方法:

  1. 完全在pylons中处理
  2. 添加一个htaccess规则来重写尾部斜杠

个人来说,我不太喜欢尾部斜杠,因为如果你有一个这样的链接:

http://example.com/people

你应该能够通过访问以下链接获取相同的数据,格式是xml:

http://example.com/people.xml

撰写回答