มีลิงค์ที่เกี่ยวข้องกับรูต?


161

มีวิธีการเชื่อมโยงทั้งหมดในหน้าจะสัมพันธ์กับไดเรกทอรีรากหรือไม่

ตัวอย่างเช่นwww.example.com/fruits/apples/apple.htmlฉันอาจมีลิงค์บอกว่า:

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

ลิงค์นี้จะชี้ไปที่www.example.com/fruits/apples/fruits/index.htmlหรือwww.example.com/fruits/index.htmlไม่? ถ้าแรกมีวิธีที่จะให้มันชี้ไปที่ 2 แทนหรือไม่?

คำตอบ:


293

URL ที่รากญาติเริ่มต้นด้วยตัวอักษรเพื่อสิ่งที่มีลักษณะเหมือน/<a href="https://stackoverflow.com/directoryInRoot/fileName.html">link text</a>

ลิงค์ที่คุณโพสต์: <a href="fruits/index.html">Back to Fruits List</a>กำลังลิงก์ไปยังไฟล์ html ที่อยู่ในไดเรกทอรีชื่อfruitsไดเรกทอรีนั้นอยู่ในไดเรกทอรีเดียวกับหน้า html ที่ลิงค์นี้ปรากฏ

ในการทำให้เป็น URL แบบรูทให้เปลี่ยนเป็น:

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

แก้ไขเพื่อตอบคำถามในความคิดเห็นจาก OP:

ดังนั้นการทำ / จะทำให้มันสัมพันธ์กับ www.example.com มีวิธีระบุว่ารูทคืออะไรถ้าฉันต้องการให้รูทเป็น www.example.com/fruits ใน www.example.com/fruits/ แอปเปิ้ล / apple.html?

ใช่การใส่ URL ล่วงหน้าในhrefหรือsrcแอตทริบิวต์ด้วย/จะทำให้เส้นทางสัมพันธ์กับไดเรกทอรีราก ตัวอย่างเช่นกำหนดหน้า html ที่www.example.com/fruits/apples.htmlที่aของจะเชื่อมโยงไปยังหน้าเว็บhref="https://stackoverflow.com/vegetables/carrots.html"www.example.com/vegetables/carrots.html

baseแท็กองค์ประกอบช่วยให้คุณระบุฐาน URI สำหรับหน้านั้น (แม้ว่าbaseแท็กจะต้องมีการเพิ่มให้กับทุกหน้าในสิ่งที่มันเป็นสิ่งจำเป็นสำหรับการใช้ฐานที่เฉพาะเจาะจงสำหรับนี้ฉันก็จะกล่าวถึงตัวอย่างของ W3:

ตัวอย่างเช่นรับการประกาศ BASE ต่อไปนี้และการประกาศ 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 ที่เกี่ยวข้อง "../cages/birds.gif" จะแก้ปัญหาดังนี้:

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

ตัวอย่างที่ยกมาจาก: http://www.w3.org/TR/html401/struct/links.html#h-12.4

การอ่านที่แนะนำ:


1
การทำเช่น/นั้นจะทำให้มันสัมพันธ์กับwww.example.comมีวิธีการระบุว่ารากคืออะไรเช่นถ้าฉันต้องการให้รากอยู่www.example.com/fruitsในwww.example.com/fruits/apples/apple.html?
คลิกโหวต

1
มีวิธีในการค้นหาแบบไดนามิกหรือไม่? สิ่งที่ชอบ ~ ใน. NET? จะเกิดอะไรขึ้นหากในแต่ละสภาพแวดล้อมคุณมีชื่อโฟลเดอร์ที่แตกต่างกัน
Kremena Lalova

21

ใช้

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

หรือ

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

1
../path ทำงาน แต่/ pathไม่ได้ผลสำหรับฉันใน Expression Web โดยใช้ภายในไฟล์ CSS (ไฟล์อยู่ใน/ Directory และการอ้างอิง / DifferentDirectory
Clay Nichols


3

หากคุณกำลังสร้าง URL จากฝั่งเซิร์ฟเวอร์ของแอปพลิเคชัน ASP.NETและปรับใช้เว็บไซต์ของคุณไปยังไดเรกทอรีเสมือน (เช่น app2) ในเว็บไซต์ของคุณเช่น http://www.yourwebsite.com/app2/

จากนั้นเพียงแค่แทรก

<base href="~/" />

หลังแท็กชื่อ

ดังนั้นเมื่อใดก็ตามที่คุณใช้รูตสัมพัทธ์เช่น

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

จะแก้ไขเป็น " http://www.yourwebsite.com/app2/Accounts/Login "

วิธีนี้คุณสามารถชี้ไปที่ไฟล์ของคุณได้ค่อนข้างแน่นอน;)

สำหรับฉันนี่เป็นทางออกที่ยืดหยุ่นที่สุด


2
คำตอบของคุณไม่ทำงาน "tilde slash" ทำงานบนฝั่งเซิร์ฟเวอร์ในโซลูชัน ASP.NET คำถามนี้ไม่เกี่ยวกับโซลูชัน ASP.NET ฝั่งเซิร์ฟเวอร์
Anders Tornblad

1
ฉันเห็นทฤษฎีของคุณ แต่ใช้งานได้ (ทั้งในทางปฏิบัติและในทางทฤษฎี) เซิร์ฟเวอร์แทนที่ "tilde slash" ด้วยสิ่งใดก็ตามที่เป็นรากของแอปพลิเคชันของคุณเมื่อสร้าง HTML คุณเคยลองก่อนไหม
A-Majeed

แน่นอนฉันลองแล้ว เว็บเซิร์ฟเวอร์ไม่ได้แทนที่เครื่องหมายตัวหนอนด้วยรากของแอปพลิเคชัน แอปพลิเคชัน ASP.NET เท่านั้นที่ทำสิ่งนี้ ในสภาพแวดล้อมอื่นไม่มีแนวคิดเช่น "แอปพลิเคชัน"
Anders Tornblad

ไม่ฉันไม่ควรพูดว่าฉันไม่ได้ใช้ ASP.NET คุณทำสมมติฐานนั้น แต่ไม่ได้พูดถึงสมมติฐานในคำตอบของคุณ นอกจากนี้คำถามไม่ได้พูดถึงสิ่งใดเกี่ยวกับสภาพแวดล้อมรันไทม์ของเซิร์ฟเวอร์ดังนั้นคุณไม่ควรคิดว่าคำถามนั้นเกี่ยวกับ ASP.NET หากคุณให้คำตอบกับ StackOverflow โปรดตรวจสอบให้แน่ใจว่าคุณตอบคำถามแล้วไม่ใช่คำถามอื่น นอกจากนี้ฉันยังบอกว่าคำถามนี้ไม่ได้เกี่ยวกับโซลูชั่น ASP.NET ฝั่งเซิร์ฟเวอร์
Anders Tornblad

ทำงานให้ฉันเมื่อฉันแสดงลิงก์จาก javascript
Balaji Birajdar

0

เพื่อให้ URL กับแท็กภาพซึ่งเป็นที่ตั้งของimages/ไดเรกทอรีในรูทเช่น

`logo.png`

คุณควรให้srcURL เริ่มต้นด้วย/ดังนี้:

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

รหัสนี้ทำงานในไดเรกทอรีใด ๆ โดยไม่มีปัญหาแม้ว่าคุณจะbranches/europe/about.phpยังคงเห็นโลโก้อยู่


0

ใช้รหัสนี้ "./" เป็นรูทบนเซิร์ฟเวอร์เพราะมันใช้งานได้สำหรับฉัน

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

แต่เมื่อคุณอยู่ในเครื่องท้องถิ่นให้ใช้รหัสต่อไปนี้ "../" เป็นเส้นทางสัมพัทธ์ราก

<a href="../fruits/index.html">Back to Fruits List</a>
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.