Как создать корневые ссылки на статическом сайте?

При создании статического HTML-сайта вы можете установить базовый url таким образом <base url="http://localhost:8888/mysite" />. Предположительно, когда вы вставляете, скажем, изображение, вы можете сделать это из этого базового url как <img src="/img/logo.png" />, что эквивалентно <img src="http://localhost:8888/mysite/img/logo.png" />

Моя проблема в том, что эти относительные ссылки не работают, когда я перемещаю сайт, что является болью, потому что я пытаюсь поделиться им с кем-то в Dropbox. Я думал, что могу просто привязать базовый url к <base url="http://dl.dropbox.com/u/xxxxxxxx/mysite" />, но ссылки на изображения здесь: <img src="http://dl.dropbox.com/img/logo.png" /> вместо полного базового URL, который я установил в голове.

Почему это?

Ответ 1

Потеряйте ведущий /, чтобы сделать его относительным URL:

<img src="img/logo.png" />

Существует 3 типа URL:

  • Полностью квалифицированный, например. http://example.org/path/to/file

  • Абсолютный, например. /path/to/file (предполагая, что ссылка происходит с любой страницы в домене example.org)

  • Относительный, например. path/to/file (предполагая, что ссылка происходит из корневой папки (/) "или имеется базовый URL http://example.org/) или to/file (предполагая, что ссылка происходит из папки "путь" или базовый URL-адрес http://example.org/path/)

Ответ 2

Я знаю, что я немного опаздываю в игру на этом, но вы действительно должны использовать теги активов Rails вместо необработанного HTML.

Например, вместо использования:

<img src="/img/logo.png" />

Вы должны использовать:

<%= image_tag 'logo.png' %>

Предполагая, что:

  • Вы используете файлы .erb для исходных страниц
  • Вы установили путь ресурса изображения к /img/ в файле config.rb

В качестве альтернативы вы можете ссылаться на CSS с помощью:

<%= stylesheet_link_tag 'file.css' %>

Файлы Javascript могут быть включены:

<%= javascript_include_tag 'file.js' %>

Так как Middleman позволяет вам контролировать, ссылаются ли на ресурсы относительно (раскомментируя некоторые строки в config.rb), использование тегов активов Rails имеет гораздо больше смысла, чем статические HTML-версии. Я настоятельно рекомендую переключиться, если вы еще этого не сделали. Если у вас есть дополнительные вопросы об этих тегах или синтаксисе ERB, не стесняйтесь спрашивать здесь!