12

在构建静态 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。

为什么是这样?

4

2 回答 2

16

丢失前导/以使其成为相对 URL:

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

URL 有 3 种类型:

  • 完全合格,例如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/

于 2012-04-18T04:15:45.680 回答
2

我知道我在这个游戏上有点晚了,但你真的应该在这里使用 Rails 资产标签而不是原始 HTML。

例如,而不是使用:

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

你应该使用:

<%= image_tag 'logo.png' %>

假如说:

  1. 您正在为源页面使用 .erb 文件
  2. 您已/img/在 config.rb 文件中设置图像资产路径

或者,您可以通过以下方式引用 CSS:

<%= stylesheet_link_tag 'file.css' %>

Javascript 文件可以包含在:

<%= javascript_include_tag 'file.js' %>

由于 Middleman 允许您控制是否相对引用资产(通过取消注释 config.rb 中的某些行),使用 Rails 资产标签比静态 HTML 更有意义。如果您还没有这样做,我强烈建议您切换。如果您对这些标签或 ERB 语法还有任何疑问,请随时在此处提问!

于 2012-05-02T03:20:00.170 回答