1

我正在我的 Pylons 应用程序中构建路线表。我无法让 redirect() 以应有的方式工作。我不确定我做错了什么。

以下是Routes 文档中的 redirect() 用法示例:

map.redirect("/home/index", "/", _redirect_code="301 Moved Permanently")

这是我的 routing.py 文件中显示的内容:

map.redirect("/view", "/", _redirect_code="301 Moved Permanently")

这是一个使用 redirect() 的路由,它出现在我的 routing.py 文件的末尾:

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

这条路线工作得很好,所以我知道 redirect() 存在并且可以正常工作。因此,我在 /view 重定向中做错了。我知道这一点,因为当我将浏览器指向 /view 时,我得到的是 404 页面,而不是被重定向。去 / 工作得很好,所以我也不认为问题存在。我认为 Routes 中的 redirect() 是一个好主意,我希望能够按预期使用它,但我不确定我在这里做错了什么。

ETA @jasonjs:我相信没有其他路线匹配。当我尝试访问 /view 然后查看 Paster 的输出时,我得到的结果如下:

21:22:26,276 DEBUG [routes.middleware] No route matched for GET /view

这对我来说似乎很有定论。我应该提一下,有一条路由匹配到 /view 的 POST 请求:

map.connect('/view', controller='view', action='search', conditions=dict(method=['POST'])

该路由也可以正常工作,并且我在前面的 routing.py 中列出了它,以便它在尝试匹配 /view[GET] 路由之前尝试匹配该路由。

4

1 回答 1

1

该语法有效,因此必须有其他事情发生。

路线对顺序很敏感。重定向上方是否有另一条路由可以匹配/view返回 404 的控制器?

路由对尾部斜杠也很敏感。您是否不小心在浏览器中键入了斜杠,但在路径中没有,反之亦然?

最后,在 中development.ini,如果您level = DEBUG在 下设置[logger_routes],则可以在访问后查看日志消息/view以查看匹配的内容。

ETA:我只是尝试在同一路径的重定向之前放置一个 POST 匹配规则,它按预期工作。您使用的是最新的 Routes 版本 (1.11) 吗?否则我没有别的东西给你,看不到代码。这可能只是从一个准系统测试用例开始并建立直到它崩溃,或者把东西拿走直到它工作......

于 2009-10-06T17:16:19.753 回答