css URLで相対パス/絶対パスを使用するにはどうすればよいですか?


87

私は本番および開発サーバーを持っています。問題はディレクトリ構造です。

開発:

  • http://dev.com/subdir/images/image.jpg
  • http://dev.com/subdir/resources/css/style.css

製造:

  • http://live.com/images/image.jpg
  • http://live.com/resources/css/style.css

両方のサーバーでプロパティの同じパスを使用するstyle.cssincssフォルダーを作成するにはどうすればよいbackground: urlですか?相対パスで使用できるトリックはありますか?

回答:


130

URLはCSSファイルの場所に関連しているため、これでうまくいくはずです。

url('../../images/image.jpg')

相対URLは2つのフォルダーに戻り、次にフォルダーに戻りimagesます。構造が同じである限り、どちらの場合でも機能するはずです。

https://www.w3.org/TR/CSS1/#urlから:

部分的なURLは、ドキュメントではなく、スタイルシートのソースに関連して解釈されます


これは機能しますか?2ステップ戻る必要がある場合(回答を更新)url(../../ images / image.jpg)?
johnlemon 2011

@ anothershrubery-申し訳ありませんが、私の最初の例に欠陥がありました
johnlemon 2011

@ danip-動作するはずですが、から2つのステップはありませんhttp://domain.com/css/style.css。そこで何ができるかわかりません...編集: -はい、更新された構造で動作するはずです、私は答えを更新しました(ちょうど別の../ようです)。
コビ2011

9

個人的には、これを.htaccessファイルで修正します。あなたはそれにアクセスできるはずです。

CSSURLを次のように定義します。

url(/image_dir/image.png);

.htacessファイルに次のように入力します。

Options +FollowSymLinks
RewriteEngine On
RewriteRule ^image_dir/(.*) subdir/images/$1

または

RewriteRule ^image_dir/(.*) images/$1

サイトによって異なります。


2

私は同じ問題を抱えていました... CSSを公開するたびに..検索/置換を行う必要がありました..相対パスが開発から本番まで異なっていたため、相対パスも機能しませんでした。

最後に検索/置換を行うのにうんざりしていて、動的なcssを作成しました(例:www.mysite.com/css.php)それは同じですが、今ではcssでphp定数を使用できます。のような何か

.icon{
  background-image:url('<?php echo BASE_IMAGE;?>icon.png');
}

開発サーバーの元の形式を失うことなくYUIコンプレッサーを使用して圧縮できるようになったため、動的にすることは悪い考えではありません。

幸運を!


13
php質問にタグはありません!OPはphpをまったく使用していない可能性があります。
Bazzz 2011

6
ただexempleは..あなたは、PHP、ASP、JSP ...考え方は同じであるを使用することができている
pleasedontbelong

6
静的な場合もあります。
jcuenod 2015

3
また、これがCSSファイルにある場合は、<?php **** ?>処理されません
JD Vangsness 2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.