1 回答
TA贡献1744条经验 获得超4个赞
仔细检查 GAE 日志条目以获取所请求的确切 URL(并被 404 拒绝)。这通常需要与您的静态处理程序的url模式之一匹配。如果发生匹配,则由相应处理程序的static_file/static_dir和upload规范(相对于您的应用程序的顶级目录 - app.yaml 文件所在的位置)指定的文件应该发生。
让我们假设初始请求是针对/. 这与您的第一个静态处理程序匹配,因此www/index.html将为您提供服务。
但是该index.html文件引用了js/index里面的脚本,因此另一个请求将跟随该 URL。但是该 URL 与您的任何处理程序的模式都不匹配,因此它会得到 404。您也没有任何名为index.
假设在这种情况下www/js/index.js您想要提供的实际上是您必须提供的文件:
更正文件中的
index.html文件名引用:<script src="js/index.js"></script>确保此引用与静态处理程序
url模式匹配。可能是这样的(对于每个以 结尾的请求路径.js将尝试提供与该路径匹配但相对于www/js目录的文件):- url: /(.*\.js)$ static_files: www/js/\1 upload: www/js/.*\.js$
或者,您可以使用可应用于多种类型文件的方案,而不是那些以 结尾的方案.js:
使用文件中的
www前缀引用index.html文件:`<script src="www/js/index.js"></script>`
重新使用您的最后一个处理程序,但向其添加通配符以
url确保匹配下的所有内容www(因为www/blah与 justwww模式不匹配):`- url: /www/*`
也可以在没有.js后缀的情况下引用脚本,但是您需要一个专门用于该文件的处理程序 - 要将其映射到实际文件名,您不能使用通配符。所以我不推荐这样做,因为它很快就会变得非常复杂。
您必须类似地考虑您需要提供的所有其他静态元素。
添加回答
举报
