Html Tornado静态文件路由
我正在尝试准备一个默认错误页。在我使用的Html Tornado静态文件路由,html,css,resources,tornado,Html,Css,Resources,Tornado,我正在尝试准备一个默认错误页。在我使用的error.html文件中: <link href="css/bootstrap.min.css" rel="stylesheet"> 假设我键入http://localhost:8888/apiurl。一切正常,css文件加载正确,错误页面呈现正常。但是,当我键入http://localhost:8888/api/foo找不到css文件 在第一种情况下,css请求http://localhost:8888/css/bootstrap.min
error.html
文件中:
<link href="css/bootstrap.min.css" rel="stylesheet">
假设我键入http://localhost:8888/api
url。一切正常,css文件加载正确,错误页面呈现正常。但是,当我键入http://localhost:8888/api/foo
找不到css文件
在第一种情况下,css请求http://localhost:8888/css/bootstrap.min.css处理程序正确处理了
。在第二种方法中,对css的请求被转换为http://localhost:8888/api/css/bootstrap.min.css
这是未处理的
我希望在这两种情况下都能找到资源,以便正确显示错误页面。我可以使用:
(r'.*/css/(.*)', web.StaticFileHandler, {'path': 'assets/css'}
不过这次我可以在浏览器中输入
http://localhost:8888/api/asdasdsadsad/css/bootstrap.min.css
url和css文件被显示,而我认为应该显示错误页面。如何解决此问题?这是因为您使用相对路径。有两种常见的方法可以解决此问题:
/
(斜杠),因此使用
部分的页面
基地。。。指定用于文档中包含的所有相对URL的基本URL
(r'/css/(.*)', web.StaticFileHandler, {'path': 'assets/css'})
后者之所以有效,是因为它的正则表达式非常广泛,正如您所注意到的,它处理的请求应该是
404
。最好的做法是让路线尽可能具体。我以前尝试过您的第一个解决方案,但它没有;它不起作用,但现在起作用了。谢谢你的帮助和第二个例子,这对我来说是新的东西。
(r'/css/(.*)', web.StaticFileHandler, {'path': 'assets/css'})