中间人删除 .html 扩展名,但保持 http://example.com/about.html 有效
Middleman remove .html extension, but keep http://example.com/about.html valid
我在 config.rb
文件中添加了以下行以删除 .html
扩展名,因此 http://example.com/about.html
变为 http://example.com/about
并查看 build
文件夹 我可以看到它的作用是为每个文件创建一个单独的目录,因此 about/index.html
用于 about.html
页面。这意味着如果使用 http://example.com/about.html
访问网站,将找不到这样的页面,我希望发生的是重定向到 http://example.com/about
或至少提供相关页面并保持 url 未清理.
我相信获得所需内容的唯一方法是通过网络服务器解决此问题。一个选项:
config.rb
require 'rack/middleman/optional_html'
use Rack::OptionalHtml,
root: '/example_domain/source',
urls: %w[/]
Gemfile
gem 'optional_html', :git => 'https://github.com/tommysundstrom/middleman-rack-optional-html.git'
_nav.html.erb
<nav>
<a href="/about">About</a>
</nav>
example.com.conf(将此添加到您的 nginx 服务器块)
location / { try_files $uri.html $uri/index.html /fallback.html; }
location = /fallback.html { }
layout.erb(如果您想使用规范网址)
<!DOCTYPE html>
<html lang="en">
<head>
<title><%= current_page.data.title %></title>
<link rel="canonical" href="https://www.example.com/<%= current_page.path.chomp('index.html').chomp('.html').chomp('/') %>"/>
</head>
我在 config.rb
文件中添加了以下行以删除 .html
扩展名,因此 http://example.com/about.html
变为 http://example.com/about
并查看 build
文件夹 我可以看到它的作用是为每个文件创建一个单独的目录,因此 about/index.html
用于 about.html
页面。这意味着如果使用 http://example.com/about.html
访问网站,将找不到这样的页面,我希望发生的是重定向到 http://example.com/about
或至少提供相关页面并保持 url 未清理.
我相信获得所需内容的唯一方法是通过网络服务器解决此问题。一个选项:
config.rb
require 'rack/middleman/optional_html'
use Rack::OptionalHtml,
root: '/example_domain/source',
urls: %w[/]
Gemfile
gem 'optional_html', :git => 'https://github.com/tommysundstrom/middleman-rack-optional-html.git'
_nav.html.erb
<nav>
<a href="/about">About</a>
</nav>
example.com.conf(将此添加到您的 nginx 服务器块)
location / { try_files $uri.html $uri/index.html /fallback.html; }
location = /fallback.html { }
layout.erb(如果您想使用规范网址)
<!DOCTYPE html>
<html lang="en">
<head>
<title><%= current_page.data.title %></title>
<link rel="canonical" href="https://www.example.com/<%= current_page.path.chomp('index.html').chomp('.html').chomp('/') %>"/>
</head>