Avoir des liens relatifs à root?
Existe-t-il un moyen de faire en sorte que tous les liens d'une page soient relatifs au répertoire racine?
Par exemple, sur www.example.com/fruits/apples/apple.html
je pourrais avoir un lien en disant:
<a href="fruits/index.html">Back to Fruits List</a>
Ce lien pointerait-il vers www.example.com/fruits/apples/fruits/index.html
ou www.example.com/fruits/index.html
? Si la première, est-il un moyen de pointer à la 2e place?
7 réponses
Une URL relative à la racine commence par un caractère /
, pour ressembler à quelque chose comme <a href="/directoryInRoot/fileName.html">link text</a>
.
, Le lien que vous avez posté: <a href="fruits/index.html">Back to Fruits List</a>
est un lien vers un fichier html situé dans un répertoire nommé fruits
, le répertoire qui est dans le même répertoire que la page html dans laquelle ce lien apparaît.
Pour en faire une URL relative à la racine, remplacez-la par:
<a href="/fruits/index.html">Back to Fruits List</a>
Édité en réponse à la question, dans les commentaires, de L'OP:
Ce faisant / le rendra relatif à www.example.com, existe-t-il un moyen de spécifier quelle est la racine, par exemple si je veux que la racine soit www.example.com/fruits dans www.example.com/fruits/apples/apple.html?
Oui, préfacer L'URL, dans les attributs href
ou src
, avec un /
rendra le chemin relatif au répertoire racine. Par exemple, pour la page html à www.example.com/fruits/apples.html
, le a
de href="/vegetables/carrots.html"
lien vers la page www.example.com/vegetables/carrots.html
.
Le base
tag élément vous permet de spécifier l'URI de base pour cette page (bien que la balise base
devrait être ajoutée à chaque page dans laquelle il était nécessaire d'utiliser une base spécifique, pour cela, je vais simplement citer l'exemple du W3:
Par exemple, étant donné la déclaration de BASE suivante et une déclaration:
<!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>
L'URI relatif "../cages/oiseaux.gif " résoudrait à:
http://www.aviary.com/cages/birds.gif
Exemple cité de: http://www.w3.org/TR/html401/struct/links.html#h-12.4 .
Suggéré lecture:
Utiliser
<a href="/fruits/index.html">Back to Fruits List</a>
Ou
<a href="../index.html">Back to Fruits List</a>
Il suffit de mettre <a href="/">some link<a/>
, cela vous mènera à la racine du site
Si vous créez L'URL à partir du Côté Serveur d'un ASP.NET application , et déployer votre site Web dans un répertoire virtuel (par exemple app2) dans votre site web, c'est-à-dire http://www.yourwebsite.com/app2/
Ensuite, insérez simplement
<base href="~/" />
Juste après la balise de titre.
Donc, chaque fois que vous utilisez root relative, par exemple
<a href="/Accounts/Login"/>
Permettrait de résoudre à "http://www.yourwebsite.com/app2/Accounts/Login"
De Cette façon, vous pouvez toujours pointez sur vos fichiers relativement-absolument;)
Pour moi, c'est la solution la plus souple.
Utilisez ce code "./ "en tant que root sur le serveur car cela fonctionne pour moi
<a href="./fruits/index.html">Back to Fruits List</a>
Mais lorsque vous êtes sur une machine locale, utilisez le code suivant "../ "comme chemin relatif racine
<a href="../fruits/index.html">Back to Fruits List</a>
Pour donner une URL à une balise d'image qui localise le répertoire images/
à la racine comme
`logo.png`
, Vous devriez donner src
URL commençant par /
comme suit:
<img src="/images/logo.png"/>
Ce code fonctionne dans tous les répertoires sans aucun soucis, même si vous êtes dans branches/europe/about.php
encore le logo peut être vu ici.