使用 netlify 将 html 个没有扩展名的页面(又名 'pretty urls')呈现为 html

Having html pages without an extension (aka 'pretty urls') render as html using netlify

我正在尝试使用 netlify 托管静态站点。我正在使用 wget -mk http://hostname/ 构建网站,所以我得到了大量静态文件,链接已重写。

我想推动他们进行 netlify 并让其托管该站点。

以 .html 结尾的页面被视为 html 文件并正确显示。

具有 'pretty urls' 和 /about 的页面被视为文本文件,并显示 HTML 标记。

除非我添加重写,否则我无法真正重命名所有这些文件,因为有指向我想保留的站点的外部链接。

我尝试设置一个 _headers 文件,但不清楚操作顺序是什么。这是一个示例 _headers 文件:

/*.css
  Content-Type: text/css
/*.js
  Content-Type: text/javascript
/*.jpg
  Content-Type: image/jpg
/*.jpeg
  Content-Type: image/jpg
/*.png
  Content-Type: image/png
/*.gif
  Content-Type: image/gif
/*
  Content-Type: text/html

这会将所有内容都视为 text/html。我可以删除最后一行,但是漂亮的文件会再次被视为文本。

是迭代所有文件并使用完整路径将它们标记为 html 的唯一解决方案,这将使 _headers 文件看起来像这样:

/about
  Content-Type: text/html
/contact
  Content-Type: text/html
...

我查看了 netlify 文档并进行了谷歌搜索,但没有找到任何有用的信息。

而不是尝试将没有扩展名的页面视为 html。使用 --adjust-extension 选项。

If a file of type ‘application/xhtml+xml’ or ‘text/html’ is downloaded and the URL does not end with the regexp ‘.[Hh][Tt][Mm][Ll]?’, this option will cause the suffix ‘.html’ to be appended to the local filename.

options section of the Wget Manual

为了解决这个问题,我最终编写了一个 shell 脚本来生成 _headers 文件。

看起来像这样:

find `pwd` -type f |grep  -v \. |sed "s#`pwd`/##" > list
for i in `cat list`; do 
  echo "/$i" >> _headers; 
  echo "  Content-Type: text/html" >> _headers; 
done
rm list

我只是签入 _headers 文件,漂亮 url 中的所有文件都被视为 html。