Пути посредника не работают в подкаталоге
Итак, это мой первый проект посредника, и я борюсь с тем, как посредник управляет ссылками.
На самом деле, я установил его на странице GitHub. Все мои ресурсы работают, поэтому я понял это правильно, но пути, ведущие к каждой странице, не работают из-за того, что сайт находится в подкаталоге.
В основном, root / directoryname / index.html работает, но каждая ссылка ведет на один каталог, поэтому там, где у меня должен быть root / directoryname / page.html, я получаю root / page.html.
Здесь есть ссылка, чтобы увидеть его в прямом эфире
Вот как выглядит мой config.rb:
# Reload the browser automatically whenever files change
configure :development do
activate :livereload
end
# Methods defined in the helpers block are available in templates
# helpers do
# def some_helper
# "Helping"
# end
# end
set :css_dir, 'css'
set :js_dir, 'js'
set :images_dir, 'img'
# Build-specific configuration
configure :build do
# For example, change the Compass output style for deployment
activate :minify_css
# Minify Javascript on build
activate :minify_javascript
# Enable cache buster
activate :asset_hash
# Use relative URLs
activate :relative_assets
activate :directory_indexes
# Or use a different image path
# set :http_prefix, "/Content/images/"
end
activate :deploy do |deploy|
deploy.method = :git
# Optional Settings
# deploy.remote = "custom-remote" # remote name or git url, default: origin
# deploy.branch = "custom-branch" # default: gh-pages
# deploy.strategy = :submodule # commit strategy: can be :force_push or :submodule, default: :force_push
end
data.works.each do |item|
proxy "/references/#{item.clean}.html", "/work.html", :locals => { :code => item }, :ignore => true
end
helpers do
# Sets the html class to 'active' when the link url is equal to the current page being viewed.
# Use just like the link_to helper.
# <%= magic_link_to 'Home', '/index.html' %>
def magic_link_to(link, url, opts={})
current_url = current_resource.url
if current_url == url_for(url) || current_url == url_for(url) + "/"
opts[:class] = "active"
end
link_to(link, url, opts)
end
end
А вот как выглядит мое главное меню:
<nav id="mainNav">
<ul>
<li id="logo"><% link_to '/index.html' do %><span>ben</span> rajalu<% end %></li>
<li id="homeLink"><%= magic_link_to 'home', '/index.html' %></li>
<li class="divider"></li>
<li><%= magic_link_to 'services', '/services.html' %></li>
<li class="divider"></li>
<li><%= magic_link_to 'références', '/references.html' %></li>
<li class="divider"></li>
<li><%= magic_link_to 'a propos', '/a-propos.html' %></li>
<li class="divider"></li>
<li id="contact"><a href="#" class="offTrigger" data-target="#contactBar">contact</a></li>
</ul>
</nav>
Что, вы парни, думаете? Что я пропустил?
1 ответ
Это основная проблема при развертывании проектов Middleman на Github Pages.
Проблема в том, что Github Pages разворачивают веб-сайты в подпапках, поэтому, когда у вас есть абсолютная ссылка, например <a href="/services.html">
, это всегда будет указывать на неправильное местоположение.
Вам нужно переключить Middleman в режим относительных ссылок. Добавьте это к вашему config.rb
:
set :relative_links, true