Cách sử dụng đường dẫn tương đối / tuyệt đối trong URL css?


86

Tôi có một máy chủ sản xuất và phát triển. Vấn đề là cấu trúc thư mục.

Phát triển:

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

Sản xuất:

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

Làm cách nào tôi có thể có một style.csstrong cssthư mục sử dụng trên cả hai máy chủ cùng một đường dẫn cho thuộc background: urltính? Có thủ thuật nào tôi có thể sử dụng với các đường dẫn tương đối không?

Câu trả lời:


128

URL có liên quan đến vị trí của tệp CSS , vì vậy điều này sẽ phù hợp với bạn:

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

URL tương đối chuyển hai thư mục trở lại, sau đó đến imagesthư mục - nó sẽ hoạt động cho cả hai trường hợp, miễn là cấu trúc giống nhau.

Từ https://www.w3.org/TR/CSS1/#url :

Các URL một phần được diễn giải liên quan đến nguồn của biểu định kiểu, không liên quan đến tài liệu


điều này có hoạt động không Nếu tôi phải quay lại 2 bước (cập nhật câu trả lời) url (../../ images / image.jpg)?
nascar

@anothershrubery - xin lỗi ví dụ đầu tiên của tôi bị sai sót
nascar

@danip - nó sẽ hoạt động, nhưng bạn không có hai bước từ http://domain.com/css/style.css. Tôi không chắc những gì có thể được thực hiện ở đó ... EDIT: - vâng, nó sẽ hoạt động với cấu trúc được cập nhật, tôi đã cập nhật câu trả lời (chỉ khác ../, có vẻ như).
Kobi

9

Cá nhân tôi sẽ sửa lỗi này trong tệp .htaccess. Bạn nên có quyền truy cập vào đó.

Xác định URL CSS của bạn như sau:

url(/image_dir/image.png);

Trong tệp .htacess của bạn, hãy đặt:

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

hoặc là

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

tùy thuộc vào trang web.


2

tôi đã gặp vấn đề tương tự ... mỗi khi tôi muốn xuất bản css của mình .. tôi phải thực hiện tìm kiếm / thay thế .. và đường dẫn tương đối cũng không hoạt động với tôi vì các đường dẫn tương đối khác với dev đến production.

Cuối cùng đã quá mệt mỏi với việc thực hiện tìm kiếm / thay thế và tôi đã tạo một css động, (ví dụ: www.mysite.com/css.php), nó giống nhau nhưng bây giờ tôi có thể sử dụng hằng số php của mình trong css. gì đó thích

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

và không phải là một ý tưởng tồi khi làm cho nó động vì bây giờ tôi có thể nén nó bằng máy nén YUI mà không làm mất định dạng ban đầu trên máy chủ nhà phát triển của mình.

Chúc may mắn!


13
Không có phpthẻ trên câu hỏi! OP có thể không sử dụng php.
Bazzz

6
chỉ là một ví dụ điển hình .. bạn có thể sử dụng php, asp, jsp .. ý tưởng cũng giống nhau
pleaseontbelong

6
nó cũng có thể là tĩnh.
jcuenod

3
Ngoài ra nếu đây là trong một file CSS thì <?php **** ?>wont được xử lý
JD Vangsness
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.