Tendo links em relação à raiz?


161

Existe uma maneira de ter todos os links em uma página em relação ao diretório raiz?

Por exemplo, www.example.com/fruits/apples/apple.htmleu poderia ter um link dizendo:

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

Este link estaria apontando para www.example.com/fruits/apples/fruits/index.htmlou www.example.com/fruits/index.html? Se o primeiro, existe uma maneira de apontar para o segundo?

Respostas:


293

Um URL relativo à raiz começa com um /caractere, para se parecer com isso <a href="https://stackoverflow.com/directoryInRoot/fileName.html">link text</a>.

O link que você postou: <a href="fruits/index.html">Back to Fruits List</a>está vinculado a um arquivo html localizado em um diretório chamado fruits, o diretório estando no mesmo diretório da página html em que esse link aparece.

Para torná-lo um URL relativo à raiz, altere-o para:

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

Editado em resposta à pergunta, nos comentários, do OP:

Assim, fazendo / será relacionado a www.example.com, existe uma maneira de especificar qual é a raiz, por exemplo, e se eu quiser que a raiz seja www.example.com/fruits em www.example.com/fruits/ maçãs / apple.html?

Sim, o prefixo da URL, nos atributos hrefou src, com a /tornará o caminho relativo ao diretório raiz. Por exemplo, dada a página html em www.example.com/fruits/apples.html, a ade href="https://stackoverflow.com/vegetables/carrots.html"link para a página www.example.com/vegetables/carrots.html.

O elemento basetag permite que você especifique a base-uri para essa página (embora a basetag deva ser adicionada a todas as páginas nas quais foi necessário o uso de uma base específica, para isso, citarei simplesmente o exemplo do W3:

Por exemplo, dada a seguinte declaração BASE e declaraçã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>

o URI relativo "../cages/birds.gif" resolveria para:

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

Exemplo citado em: http://www.w3.org/TR/html401/struct/links.html#h-12.4 .

Leitura sugerida:


1
Então, fazendo /o fará em relação ao www.example.com, há uma maneira para especificar o que a raiz é, por exemplo, o que se eu quiser a raiz para ser www.example.com/fruitsem www.example.com/fruits/apples/apple.html?
— Click UpVote

1
existe uma maneira de encontrá-lo dinamicamente? Algo como ~ no .NET? O que acontecerá se em cada ambiente você tiver um nome de pasta diferente?
— Kremena Lalova 29/07

21

Usar

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

ou

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

1
../path funcionou, mas / path não funcionou para mim no Expression Web usando-o em um arquivo CSS. (O arquivo estava em / Diretório e referência / DifferentDirectory
— Clay Nichols

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

3

Se você estiver criando a URL do lado do servidor de um aplicativo ASP.NET e implantando seu site em um diretório virtual (por exemplo, app2) no seu site, por exemplo, http://www.yourwebsite.com/app2/

então basta inserir

<base href="~/" />

logo após a tag title.

portanto, sempre que você usar o parente raiz, por exemplo

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

resolveria " http://www.yourwebsite.com/app2/Accounts/Login "

Dessa forma, você sempre pode apontar para seus arquivos de forma relativamente absoluta;)

Para mim, esta é a solução mais flexível.


2
Sua resposta simplesmente não funciona. "barra til" funciona no lado do servidor em soluções ASP.NET. Esta pergunta não é sobre soluções ASP.NET do lado do servidor.
— Anders Tornblad 10/10

1
Entendo sua teoria, mas funciona (na prática e na teoria) O servidor substitui a "barra de til" por qualquer que seja a raiz do seu aplicativo ao gerar o HTML. Você já tentou isso primeiro?
— A-Majeed

Claro que tentei. Os servidores da Web NÃO substituem a barra til pela raiz de um aplicativo. Somente aplicativos ASP.NET fazem isso. Em outros ambientes, não existe um conceito como "aplicativo".
— Anders Tornblad

Não, eu não deveria ter que dizer que não uso o ASP.NET. Você fez essa suposição, mas não mencionou a suposição em sua resposta. Além disso, a pergunta não menciona nada sobre o ambiente de tempo de execução do servidor, portanto, você não deveria ter assumido que a pergunta era sobre um ASP.NET. Se você der uma resposta no StackOverflow, certifique-se de responder à pergunta - e não a alguma outra pergunta. Além disso, eu disse que essa pergunta não é sobre soluções ASP.NET do lado do servidor.
— Anders Tornblad 14/10

Trabalhou para mim quando renderizei links de javascript
— Balaji Birajdar

0

Para atribuir um URL a uma tag de imagem que localiza o images/diretório na raiz, como

`logo.png`

você deveria dar src URL começando com /o seguinte:

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

Esse código funciona em qualquer diretório sem problemas, mesmo que você branches/europe/about.phpainda esteja no logotipo.


0

Use este código "./" como root no servidor, pois funciona para mim

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

mas quando você estiver em uma máquina local, use o seguinte código "../" como o caminho relativo raiz

<a href="../fruits/index.html">Back to Fruits List</a>
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.