2015-12-12 6 views
0

я добавил следующие строки внутри моего 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-адрес неочищенной.Посредник удалить расширение .html, но держать http://example.com/about.html действует

ответ

0

Я верю, что единственный способ получить то, что вы ищете, - это решить это через ваш веб-сервер. Один из вариантов:

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 (Если вы хотите использовать канонические URLs)

<!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> 
+0

Просто дополнительное примечание. Если example.com/about.html перенаправить на example.com/about невозможно через посредника из-за того, что посредник использует только рубин локально, чтобы создать статический сайт, который вы загрузите на свой сервер. Вот где nginx придет, чтобы обрабатывать расширение .html и, если необходимо, перенаправить 301 из about.html в about. Однако, если вас больше беспокоят индексирование поисковых систем на правильной странице, я думаю, что лучшим вариантом было бы не делать 301-й, так как это может стать беспорядочным в зависимости от того, насколько велик ваш сайт, используя канонический URL-адрес, который может работать лучше всего. –

 Смежные вопросы

  • Нет связанных вопросов^_^