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
后缀的情况下引用脚本,但是您需要一个专门用于该文件的处理程序 - 要将其映射到实际文件名,您不能使用通配符。所以我不推荐这样做,因为它很快就会变得非常复杂。
您必须类似地考虑您需要提供的所有其他静态元素。
添加回答
举报