web-dev-qa-db-ja.com

静的サイトでルート相対リンクを作成するにはどうすればよいですか?

静的HTMLサイトを構築するときは、<base url="http://localhost:8888/mysite" />のようにベースURLを設定できます。たとえば、画像を挿入するときは、<img src="/img/logo.png" />のようにそのベースURLから挿入できます。これは<img src="http://localhost:8888/mysite/img/logo.png" />と同等です。

私の問題は、サイトを移動するときにこれらの相対リンクが機能しないことです。これは、Dropboxの誰かと共有しようとしているため、苦痛です。ベースURLを<base url="http://dl.dropbox.com/u/xxxxxxxx/mysite" />に変更するだけでよいと思いましたが、画像のリンクは、頭に設定した完全なベースURLではなく<img src="http://dl.dropbox.com/img/logo.png" />になっています。

どうしてこれなの?

11
sea_monster

先頭の/を失って、相対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/

16
tobyodavies

これについてはゲームに少し遅れていることは承知していますが、ここでは生のHTMLの代わりにRailsアセットタグを使用する必要があります。

たとえば、使用する代わりに:

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

次を使用する必要があります。

<%= image_tag 'logo.png' %>

仮定して:

  1. ソースページに.erbファイルを使用しています
  2. Config.rbファイルで画像アセットパスを/img/に設定しました

または、次のコマンドでCSSを参照することもできます。

<%= stylesheet_link_tag 'file.css' %>

Javascriptファイルは次のものに含めることができます。

<%= javascript_include_tag 'file.js' %>

Middlemanではアセットが比較的参照されるかどうかを制御できるため(config.rbの一部の行のコメントを解除することで)、Railsアセットタグを使用する方が静的HTMLタグよりもはるかに理にかなっています。切り替えることを強くお勧めします)まだ行っていない場合は、これらのタグのayまたはERB構文についてさらに質問がある場合は、ここで遠慮なく質問してください。

2
Ray Brown