【问题标题】:Having html pages without an extension (aka 'pretty urls') render as html using netlify使用 netlify 将没有扩展名的 html 页面(又名“漂亮的 url”)呈现为 html
【发布时间】:2019-03-14 20:35:21
【问题描述】:

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

我想推动他们使用 netlify 并让该网站托管。

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

具有像/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

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

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

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

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

【问题讨论】:

    标签: netlify static-html


    【解决方案1】:

    为了解决这个问题,我最终编写了一个 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 文件,所有漂亮网址的文件都被视为html。

    【讨论】:

    • 谢谢!这对我来说不起作用,因为应用程序目录名称包含“。” (因此所有路径都将被排除)。我最终在 Ruby 中完成了它:File.write("_headers", Dir["**/*"].select { |x| File.file?(x) }.reject { |x| x.include?(".") }.sort.map { |x| "/#{x}\n Content-Type: text/html" }.join("\n"))
    【解决方案2】:

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

    如果下载了 'application/xhtml+xml' 或 'text/html' 类型的文件,并且 URL 不以正则表达式 '.[Hh][Tt][Mm][Ll]?' 结尾,则此选项将导致后缀“.html”附加到本地文件名。

    options section of the Wget Manual

    【讨论】:

    • 感谢您的建议。不幸的是,这不涉及外部链接。我可以为所有页​​面添加重定向,但此时我还不如只生成 _headers 文件。
    猜你喜欢
    • 2015-05-17
    • 1970-01-01
    • 1970-01-01
    • 2022-08-18
    • 2011-02-02
    • 2015-05-18
    • 2019-03-03
    • 2012-03-05
    • 2014-11-23
    相关资源
    最近更新 更多