CSS URL에서 상대 / 절대 경로를 사용하는 방법은 무엇입니까?


86

프로덕션 및 개발 서버가 있습니다. 문제는 디렉토리 구조입니다.

개발:

  • 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.csscss두 서버에 대한 동일한 경로에 그 사용 폴더 background: url재산? 상대 경로와 함께 사용할 수있는 트릭이 있습니까?

답변:


128

URL은 CSS 파일의 위치에 상대적 이므로 다음과 같이 작동합니다.

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

상대 URL은 두 개의 폴더를 뒤로 이동 한 다음 images폴더로 이동합니다. 구조가 동일하면 두 경우 모두 작동합니다.

에서 https://www.w3.org/TR/CSS1/#url :

부분 URL은 문서가 아닌 스타일 시트의 소스를 기준으로 해석됩니다.


2 단계 뒤로 이동해야하는 경우 (답변 업데이트) url (../../ images / image.jpg)?
nascar 2011

@anothershrubery - 미안 내 첫 번째 예는 결함이되었다
나스카

@danip-작동하지만 http://domain.com/css/style.css. 나는 거기에서 무엇을 할 수 있는지 잘 모르겠습니다 ... 편집 : -예, 업데이트 된 구조로 작동해야하며 답변을 업데이트했습니다 (다른 ../것 같습니다).
Kobi 2011

9

개인적으로 나는 .htaccess 파일에서 이것을 고칠 것입니다. 그것에 액세스 할 수 있어야합니다.

다음과 같이 CSS URL을 정의하십시오.

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 상수를 사용할 수 있습니다. 같은 somethig

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

이제 내 dev 서버에서 원래 형식을 잃지 않고 YUI 압축기를 사용하여 압축 할 수 있기 때문에 동적으로 만드는 것은 나쁜 생각이 아닙니다.

행운을 빕니다!


13
php질문에 태그 가 없습니다 ! OP는 PHP를 전혀 사용하지 않을 수 있습니다.
Bazzz

6
.. 당신이 PHP를 사용할 수있는 ASP는, JSP .. 아이디어는 같은 단지 exemple이다
pleasedontbelong

6
정적 일 수도 있습니다.
jcuenod 2015 년

3
이것은 CSS 파일 인 경우에도 다음은 <?php **** ?>처리 습관
JD Vangsness
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.