我目前的路由表如下:
routing_table = [
("/api/ping", PingHandler),
("/css/(.*)", StaticFileHandler, {
"path": "my-website-path/css"
}),
("/js/(.*)", StaticFileHandler, {
"path": "my-website-path/js"
}),
("/fonts/(.*)", StaticFileHandler, {
"path": "my-website-path/fonts"
})
我想只使用一个正则表达式来处理我的静态文件。 像下面的东西?
routing_table = [
("/api/ping", PingHandler),
("/(css|js|fonts)/(.*)", StaticFileHandler, {
"path": "my-website-path/$1"
})
我该怎么做? 提前谢谢。
答案 0 :(得分:2)
RequestHandler
将所有匹配作为http-verb函数的位置参数传递。由于StaticFileHandler
扩展了它并且您有2个捕获的组,因此您的代码将无法按预期工作。因此需要一步一步地改变正则表达式:
/(.*)
((jss|css|fonts)/.*
?:
:((?:jss|css|fonts)/.*
代码
routing_table = [
("/api/ping", PingHandler),
("/((?:css|js|fonts)/.*)", StaticFileHandler, {
"path": "my-website-path"
}
请记住,StaitcFileHandler
(如提到的@ cricket_007)......
此处理程序主要用于开发和轻量级文件服务;对于繁重的流量,使用专用的静态文件服务器(如nginx或Apache)会更有效。我们支持HTTP Accept-Ranges机制来返回部分内容(因为某些浏览器需要使用此功能来搜索HTML5音频或视频)。