Có liên kết liên quan đến root?


161

Có cách nào để tất cả các liên kết trên một trang có liên quan đến thư mục gốc không?

Ví dụ: trên www.example.com/fruits/apples/apple.htmltôi có thể có một liên kết nói:

<a href="fruits/index.html">Back to Fruits List</a>

Liên kết này sẽ được trỏ đến www.example.com/fruits/apples/fruits/index.htmlhoặc www.example.com/fruits/index.html? Nếu là người đầu tiên, có cách nào để nó chỉ đến điểm thứ 2 không?

Câu trả lời:


293

Một URL liên quan đến gốc bắt đầu bằng một /ký tự, để trông giống như thế <a href="https://stackoverflow.com/directoryInRoot/fileName.html">link text</a>.

Liên kết bạn đã đăng: <a href="fruits/index.html">Back to Fruits List</a>đang liên kết đến một tệp html nằm trong thư mục có tên fruits, thư mục nằm trong cùng thư mục với trang html nơi liên kết này xuất hiện.

Để làm cho nó một URL tương đối gốc, thay đổi nó thành:

<a href="/fruits/index.html">Back to Fruits List</a>

Được chỉnh sửa để trả lời câu hỏi, trong các bình luận, từ OP:

Vì vậy, làm / sẽ làm cho nó liên quan đến www.example.com, có cách nào để xác định gốc là gì không, ví dụ: nếu tôi muốn root là www.example.com/fruits trong www.example.com/fruits/ táo / táo.html?

Có, mở đầu URL, trong hrefhoặc srcthuộc tính, với a /sẽ tạo đường dẫn liên quan đến thư mục gốc. Ví dụ, với các trang html tại www.example.com/fruits/apples.html, các acủa href="https://stackoverflow.com/vegetables/carrots.html"ý chí liên kết tới trang www.example.com/vegetables/carrots.html.

Phần tử basethẻ cho phép bạn chỉ định uri cơ sở cho trang đó (mặc dù basethẻ sẽ phải được thêm vào mỗi trang cần sử dụng một cơ sở cụ thể, vì điều này tôi chỉ cần trích dẫn ví dụ của W3:

Ví dụ: đưa ra khai báo BASE sau và khai báo A:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
   "http://www.w3.org/TR/html4/strict.dtd">
<HTML>
 <HEAD>
   <TITLE>Our Products</TITLE>
   <BASE href="http://www.aviary.com/products/intro.html">
 </HEAD>

 <BODY>
   <P>Have you seen our <A href="../cages/birds.gif">Bird Cages</A>?
 </BODY>
</HTML>

URI tương đối "../cages/birds.gif" sẽ giải quyết:

http://www.aviary.com/cages/birds.gif

Ví dụ được trích dẫn từ: http://www.w3.org/TR/html401/struct/links.html#h-12.4 .

Cách đọc được đề nghị:


1
Vì vậy, làm /sẽ làm cho nó liên quan đến www.example.com, có cách nào để xác định gốc là gì, ví dụ nếu tôi muốn root nằm www.example.com/fruitstrong www.example.com/fruits/apples/apple.html?
Nhấp vào Upvote

1
Có cách nào để tự động tìm nó? Một cái gì đó như ~ trong .NET? Điều gì sẽ xảy ra nếu trong mỗi môi trường bạn có tên thư mục khác nhau?
Kremena Lalova

21

Sử dụng

<a href="/fruits/index.html">Back to Fruits List</a>

hoặc là

<a href="../index.html">Back to Fruits List</a>

1
../path đã hoạt động nhưng / path không hoạt động với tôi trong Expression Web bằng cách sử dụng nó trong tệp CSS. (Tệp nằm trong / Thư mục và tài liệu tham khảo / DifDirectory
Clay Nichols

3
<a href="/fruits/index.html">Back to Fruits List</a>

3

Nếu bạn đang tạo URL từ phía máy chủ của ứng dụng ASP.NET và triển khai trang web của bạn đến một thư mục ảo (ví dụ: app2) trong trang web của bạn, ví dụ : http://www.yourwebsite.com/app2/

sau đó chỉ cần chèn

<base href="~/" />

ngay sau thẻ tiêu đề.

vì vậy bất cứ khi nào bạn sử dụng root tương đối, vd

<a href="/Accounts/Login"/> 

sẽ quyết định " http://www.yourwebsite.com/app2/Accounts/Login "

Bằng cách này, bạn luôn có thể trỏ đến các tệp của mình một cách tương đối tuyệt đối;)

Đối với tôi đây là giải pháp linh hoạt nhất.


2
Câu trả lời của bạn đơn giản là không hoạt động. "Dấu gạch chéo" hoạt động ở phía máy chủ trong các giải pháp ASP.NET. Câu hỏi này không phải là về các giải pháp ASP.NET phía máy chủ.
Anders Tornblad

1
Tôi thấy lý thuyết của bạn nhưng nó KHÔNG hoạt động, (cả trong thực tế và lý thuyết) Máy chủ thay thế "dấu gạch chéo" bằng bất cứ thứ gì là gốc của ứng dụng của bạn khi tạo HTML. Bạn đã thử nó đầu tiên?
A-Majeed

Tất nhiên tôi đã thử nó. Máy chủ web KHÔNG thay thế dấu gạch chéo bằng gốc của ứng dụng. Chỉ có các ứng dụng ASP.NET làm điều này. Trong các môi trường khác, không có khái niệm nào là "ứng dụng".
Anders Tornblad

Không, tôi không nên nói rằng tôi không sử dụng ASP.NET. Bạn đã đưa ra giả định đó, nhưng không đề cập đến giả định trong câu trả lời của bạn. Ngoài ra, câu hỏi không đề cập bất cứ điều gì về môi trường thời gian chạy máy chủ, vì vậy BẠN không nên cho rằng câu hỏi là về ASP.NET. Nếu bạn đưa ra câu trả lời trên StackOverflow, vui lòng đảm bảo rằng bạn trả lời câu hỏi - chứ không phải một số câu hỏi khác. Ngoài ra, tôi DID nói rằng câu hỏi này không phải là về các giải pháp ASP.NET phía máy chủ.
Anders Tornblad

Làm việc cho tôi khi tôi kết xuất các liên kết từ javascript
Balaji Birajdar

0

Để cung cấp URL cho thẻ hình ảnh định vị images/thư mục trong thư mục gốc như

`logo.png`

bạn nên cung cấp srcURL bắt đầu bằng /như sau:

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

Mã này hoạt động trong bất kỳ thư mục nào mà không gặp bất kỳ rắc rối nào ngay cả khi bạn branches/europe/about.phpvẫn ở trong logo có thể nhìn thấy ngay tại đó.


0

Sử dụng mã này "./" làm root trên máy chủ vì nó hoạt động với tôi

<a href="./fruits/index.html">Back to Fruits List</a>

nhưng khi bạn ở trên một máy cục bộ, hãy sử dụng đoạn mã sau "../" làm đường dẫn tương đối gốc

<a href="../fruits/index.html">Back to Fruits List</a>
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.