2011-11-21 9 views
11

Tôi đang cố gắng tạo URL thân thiện với người dùng bằng cách viết lại chế độ. Vấn đề của tôi là sau khi đưa ra danh mục như 'tên' cho URL của mình, khi tôi gọi trang bằng URL mới, nó không thể tải tệp CSS hoặc hình ảnh.Thiếu tệp CSS và hình ảnh sau khi URL viết lại

Tôi có một liên kết như:

localhost/mywebsite/dự án id = 22

liên kết mới là một cái gì đó giống như

localhost/mywebsite/dự án/22/myproject.project

htaccess code:

RewriteRule ^project/([0-9]*)/.*\.project$ /project.php?project=$1 [L] 

(nó có thể không phải 100% đúng, nhưng tôi không có quyền truy cập vào mã của tôi ngay bây giờ vì vậy tôi chỉ viết này và nó hoạt động tốt trên các nguồn gốc)

thư mục gốc của tôi là localhost/mywebsite/

và file CSS của tôi là trong css/style.css

localhost/mywebsite/css/style.css

htaccess của tôi

localhost/mywebsite/.htaccess

và tập tin project.php của tôi là trong

localhost/mywebsite/project.php

Vì vậy, trong trang dự án, tôi có quyền truy cập vào tệp CSS bằng cách sử dụng đường dẫn tương đối,

<link href="css/style.css" rel="stylesheet" type="text/css" /> 

nhưng khi tôi sử dụng trang URL được viết lại không thể tìm thấy tệp CSS.

Tôi không thể sử dụng đường dẫn tuyệt đối với tên miền vì tôi chưa có miền! và nó có thể là bất cứ điều gì.

một cách là sử dụng đường dẫn tương đối đến tên miền như đề xuất về những câu hỏi tương tự localhost/mywebsite/project.php và khi tôi chạy kịch bản của tôi localy thư mục gốc của tôi là localhost để liên kết css nên trông giống như

href = "mywebsite/css/style.css"

nhưng khi tôi đi sống tôi nên thay đổi tất cả các liên kết đến có lẽ cái gì đó như

href = "/ css/style.css"

này có vẻ như rất nhiều công việc

Trả lời

26

Đối với phiên bản địa phương của bạn thêm

<base href="//localhost/mywebsite" /> 

vào phần đầu

và các phiên bản sống của bạn thay đổi nó để

<base href="//your.domain.here" /> 

tham khảo tại http://www.w3.org/TR/html4/struct/links.html#h-12.4

+0

vâng nhưng cũng có những hình ảnh và tôi không thể thay đổi tên miền cho mỗi hình ảnh đơn lẻ sau khi xuất hiện trực tiếp – max

+0

@max, thẻ 'base' hoạt động với hình ảnh .. ví dụ tại http://jsfiddle.net/gaby/JE656/ –

+0

Đối với tôi ' làm việc như một sự quyến rũ! :) – jackkorbin

1

Chèn một hình ảnh vào cùng một tập tin với đường dẫn tương đối giống như liên kết css href, tải trang trong một trình duyệt, click chuột phải vào hình ảnh trên internet explorer, chọn Properties và bạn sẽ thấy nơi đường dẫn tương đối thực sự trỏ tới.

+0

Đây là một cách tốt để tìm ra nơi bạn đang ở :) – Mattis

+0

dường như tôi nên bao gồm mywebsite về ông liên kết cuz localhost coi là gốc rễ của tôi và/mywebsite/thư mục chỉ là một thư mục để nó nên được bao gồm trong liên kết. tôi không thể thay đổi tất cả các liên kết khi tôi đang phát trực tiếp! – max

+0

Bạn không thể thay đổi tất cả các liên kết dễ hiểu phức tạp để giữ cho tất cả các đường dẫn tương đối nhưng điều chỉnh mỗi đường dẫn với vị trí tương đối chính xác. Lưu ý: i didnt có nghĩa là sử dụng đường dẫn tuyệt đối tôi có nghĩa là kiểm tra đường dẫn tuyệt đối và điều chỉnh đường dẫn tương đối của bạn cho đến khi bạn làm cho nó đúng. Bạn có thể sử dụng ../ để đi lên một thư mục. – Ozzy

2

bạn phải xác định con đường cơ sở hoặc con đường xem máy chủ trong connection.php và bất cứ khi nào u muốn con đường đó, hãy toàn cầu. sau đó biến đó sẽ b gọi và css hoặc hình ảnh sẽ lấy toàn bộ đường dẫn.

ví dụ $ SVP = "http://www.example.com/"

toàn cầu $ SVP; echo $ SVP;

nên