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

Google app engine 使用app.yaml for go runtime从所有url文件名中删除.html,google-app-engine,webpack-dev-server,app.yaml,Google App Engine,Webpack Dev Server,App.yaml,我试图找到一个指南或一些帮助,关于如何使用app.yaml for go运行时在google app engine上从所有url文件名中删除.html。我发现Google帮助文档中关于如何使用app.yaml的信息如果诚实的话,会让人很困惑 我在大约4个文件夹中有大约350个.html文件。我的app.yaml文件位于根目录中 如果它是一个.htaccess文件,我会尝试做类似下面的事情。有什么想法或建议吗 RewriteEngine On RewriteCond %{REQUEST_FILEN

我试图找到一个指南或一些帮助,关于如何使用app.yaml for go运行时在google app engine上从所有url文件名中删除.html。我发现Google帮助文档中关于如何使用app.yaml的信息如果诚实的话,会让人很困惑

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

如果它是一个.htaccess文件,我会尝试做类似下面的事情。有什么想法或建议吗

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

如果我想进一步压缩提问,我希望也能设置这个,这样当我使用Webpack dev server和build时,我也能有一个一致的使用/体验(即在url上没有.html结尾的情况下工作),但这可能会推动现在的问题,如果诚实的话,我目前还没有对这个问题进行过太多的研究

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

这可能是可能的,这取决于您如何构造静态资产的名称空间

如果
.html
文件的一个子集(或全部)可以由文件路径/名称上的单个正则表达式模式(而不是
.html
后缀)匹配,而该模式与其他静态资产不匹配,那么就很容易了,您只需要两个处理程序语句。假设下面的静态文件位于应用程序的
static
目录中,请根据需要进行调整

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

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

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

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

但这可能会干扰任何其他静态文件和应用程序的动态处理程序(如果有)。为了避免出现这种情况,您需要所有的都能被更具体的模式识别,并且您必须将它们的处理语句放在“一网打尽”的上面。

这些html文件是静态资产吗?是的,它们是静态文件。
- url: /(<your_pattern>)$
  static_files: static/\1.html
  upload: static/<your_pattern>\.html$
# this serves your static/some/path/<file>.html asset as /some/path/<file>.html
- url: /(some/path/.*\.html)$
  static_files: static/\1
  upload: static/some/path/.*\.html$

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

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