【问题标题】:Error 404 when loading subfolder on google app engine在谷歌应用引擎上加载子文件夹时出现错误 404
【发布时间】:2013-12-05 14:03:04
【问题描述】:

我有一个以 index.html 作为主页的网站,可以正常工作,但我想创建一个带有子文件夹的网站结构,所以我创建了一个名为“team”的文件夹,在团队内部我放了一个 index.html 文件团队信息。当我加载 www.mysite.com/team/index.html 时它工作正常,但如果我加载 www.mysite.com/team 我会收到 404 错误。 我如何解决这个问题,以便在子文件夹中自动加载 index.html??

我使用谷歌应用引擎作为服务器,我使用谷歌应用引擎启动器上传文件并使用一些 phyton 文件。

【问题讨论】:

    标签: html google-app-engine


    【解决方案1】:

    在你app.yaml 中,像这样定义你的静态文件处理程序:

    …
    handlers:
    - url: /static
      static_dir: static
    - url: /(.*?)/?
      static_files: \1/index.html
      upload: (.*?)/index.html
    …
    

    请注意,由于您是这样定义网站结构的,因此您将无法访问除 index.html 文件之外的任何其他文件。例如,如果您转到 /images/logo.png,App Engine 会尝试从静态文件 images/logo.png/index.html 提供该服务。

    要解决这个问题,您需要将所有静态文件放在不同的子目录中(在上面的示例中为/static),并将其作为static_dir 提供。然后您应该将index.html 文件中的文件引用为/static/images/logo.png 等。

    更新:我会将您的app.yaml 粘贴到此处,因为您无法在评论中正确格式化它:

    handlers:
    - url: /(.*\.(gif|png|jpg|ico|js|css|php|xml))
      static_files: \1
      upload: (.*\.(gif|png|jpg|ico|js|css|php|xml))
    
    - url: /robots.txt
      static_files: robots.txt
      upload: robots.txt 
    
    - url: /favicon.ico
      static_files: favicon.ico
      upload: favicon.ico
    
    - url: .*
      script: main.py
    
    - url: /static
      static_dir: static
    
    - url: /(.*?)/?
      static_files: \1/index.html
      upload: (.*?)/index.html
    

    您的问题是 - url: .* 指令捕获了所有内容,因此永远无法到达底部的两个处理程序。

    此外,您应该考虑在script 中使用应用程序引用而不是文件名。不推荐提供脚本文件名。

    【讨论】:

    • 我有一个错误:错误:服务器错误服务器遇到错误,无法完成您的请求。如果问题仍然存在,请报告您的问题..... my app.yaml: handlers: - url: /(.*\.(gif|png|jpg|ico|js|css|php|xml)) static_files: \1 上传:(.*\.(gif|png|jpg|ico|js|css|php|xml)) - url:/robots.txt 静态文件:robots.txt 上传:robots.txt - url:/favicon。 ico static_files: favicon.ico 上传: favicon.ico - url: .* 脚本: main.py - url: /static static_dir: static - url: /(.*?)/?静态文件:\1/index.html 上传:(.*?)/index.html
    • 好的,但是现在无法加载主页:错误:未找到请求的 URL / 在此服务器上未找到。
    • 您只想在/ 上提供主页吗?然后向上移动规则并将url 模式重命名为/。如果您希望相同的路径同时匹配静态文件和您的处理程序,这将涉及更复杂的规则。
    • 我在根目录中有所有 html 文件,但谷歌没有正确索引我的附加链接,所以我需要创建一个具有某种结构的网站站点地图,所以我想把每个“菜单项”我的页面里面有一个文件夹来制作一个树形目录结构。所以我需要加载 www.mysite.com ->index.html; www.mysite.com/team -> /team/team.html; www.mysite.com/team/ -> /team/team.html 和 www.mysite.com/team/team.html -> /team/team.html。起初我试图将 team.html 重命名为 index.html 但没有成功。
    • 为目录提供索引文件在 App Engine 上的工作方式不同(至少不像在 Apache 配置文件中那样)。您所能做的就是使用 URL 路由和正则表达式,并弄清楚如何构建您的处理程序。
    猜你喜欢
    • 1970-01-01
    • 2016-10-20
    • 2016-07-01
    • 1970-01-01
    • 2019-02-12
    • 2023-03-25
    • 1970-01-01
    • 2014-07-11
    • 2015-01-02
    相关资源
    最近更新 更多