使用 app.yaml for go runtime 从所有 url 文件名中删除 .html

Removing .html from all url filenames using app.yaml for go runtime

我正在尝试找到有关如何使用 app.yaml for go runtime on google 从所有 url 文件名中删除 .html 的指南或帮助应用引擎。我发现 Google 帮助文档中有关如何使用 app.yaml 的信息非常令人困惑,如果说实话的话。

我在大约 4 个文件夹中有大约 350 个 .html 文件。我的 app.yaml 文件在根目录中。

如果它是一个 .htaccess 文件,我正在尝试执行类似于下面的操作。有什么想法或提示吗?

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ .html [NC,L]

如果我要进一步提出问题,我也想进行此设置,这样当我使用 Webpack 开发服务器和构建时,我也可以获得一致的使用/体验(即在没有 .[=25 的情况下工作) =] 以 url) 结尾,但这可能暂时推动了这个问题,如果说实话,我目前还没有研究太多。

从技术上讲,至少在 GAE 中,您不是 删除 .html 后缀,而是 添加 它到获取要服务的静态资产名称的请求路径(我假设您的实际资产文件名称中确实有 .html 后缀)。

这可能是可能的,具体取决于您如何构建静态资产的命名空间。

如果 .html 文件的一个子集(或全部)可以与文件 path/name 上的单个正则表达式模式匹配(.html 后缀除外) t 匹配其他静态资产那么很容易,你只需要 2 个处理程序语句。假设下面的静态文件位于应用程序的 static 目录中,请根据需要进行调整。

第一个处理程序语句将为带有 .html 后缀的请求提供服务,以防止为它们获取 404(否则它们将被转换为类似 /path/file.html.html 的内容,这可能不是您的方式为您的资产命名)

- url: /(<your_pattern>\.html)$
  static_files: static/
  upload: static/<your_pattern>\.html$

第二条语句是 "appending" 请求路径的 .html 后缀并提供相应的资产文件(如果存在,如果不存在则为 404):

- url: /(<your_pattern>)$
  static_files: static/.html
  upload: static/<your_pattern>\.html$

一个实际的例子,假设您的 .html 文件将被请求为 /some/path/<file>.html,并且您希望它们也可以作为 /some/path/<file> 访问。然后你会有这些处理程序语句:

# this serves your static/some/path/<file>.html asset as /some/path/<file>.html
- url: /(some/path/.*\.html)$
  static_files: static/
  upload: static/some/path/.*\.html$

# this serves your static/some/path/<file>.html asset as /some/path/<file>
- url: /(some/path/.*)$
  static_files: static/.html
  upload: static/some/path/.*\.html$

如果您有多个这样的子集,您只需为每个子集添加类似的 2 个语句。但如果你有很多这样的子集,这就无法扩展。

如果你没有这样的模式(或者如果你有太多的子集)它可能会更难。第二个具有 blind/catch-all 处理程序模式的一对语句仍然适用于静态 .html 文件:

- url: /(.*\.html)$
  static_files: static/
  upload: static/.*\.html$

# catch-all pattern
- url: /(.*)$
  static_files: static/.html
  upload: static/.*\.html$

但这可能会干扰任何其他静态文件和您应用的动态处理程序(如果有的话)。为避免您需要 所有 可以通过更具体的模式进行识别,并且您必须为它们放置处理程序语句 以上 包罗万象。