Comment puis-je créer des liens relatifs à la racine dans un site statique?
Lors de la construction d'un site HTML statique, vous pouvez définir l'url de base comme <base url="http://localhost:8888/mysite" />
. Quand vous insérez une image, vous pouvez le faire à partir de l'url de base comme <img src="/img/logo.png" />
, ce qui est équivalent à <img src="http://localhost:8888/mysite/img/logo.png" />
Mon problème est que ces liens relatifs ne fonctionne pas quand je bouge le site autour de, ce qui est une douleur parce que je suis en train de le partager avec quelqu'un sur Dropbox. J'ai pensé que je pourrais juste chage de l'url de base pour <base url="http://dl.dropbox.com/u/xxxxxxxx/mysite" />
, mais des liens de l'image sont à regarder ici: <img src="http://dl.dropbox.com/img/logo.png" />
au lieu de l'URL de base complète je mis dans la tête.
Pourquoi est-ce?
<base url
chose et il suffit de déplacer le dossier principal...? (puisqu'il n'est pas un site dynamique, je ne comprends pas... votre url de base est celui où votre fichier actuel réside...)C'est ce que je pensais aussi, mais si je supprime la base de la balise et faites-le glisser mon site web à l'arbitraire d'un dossier comme le bureau et passez la souris sur un lien, il le cherche dans
http://localhost/assets/img
. Il doit être quelque chose comme ~/Desktop/website_folder/assets/img
.Quel que soit le niveau de hiérarchie, je suis à dans le site, je veux être en mesure de faire appel à une image de
/assets/img/foo.png
. Si je me régal à chaque page de sa propre base, je vais devoir créer des liens relatifs et d'avoir à vous inquiéter au sujet de cette situation: ../../../../../assets/img/foo.png
.OriginalL'auteur sea_monster | 2012-04-18
Vous devez vous connecter pour publier un commentaire.
Perdre le premier
/
pour en faire une URL relative:Il y a 3 types d'URL:
Pleinement Qualifié, par exemple
http://example.org/path/to/file
Absolue, par exemple
/path/to/file
(en supposant que le lien est à partir de n'importe quelle page dans le example.org de domaine)Par rapport, par exemple,
path/to/file
(en supposant que le lien vient de la racine (/
) "dossier" ou il y a une URL de basehttp://example.org/
)ou
to/file
(en supposant que le lien vient de l'intérieur de la "voie" "le dossier" ou l'URL de base esthttp://example.org/path/
)path/to/file
ou../path/to/file
ou../../path/to/file
, que je voudrais éviter. Je suis l'aide de Intermédiaire comme un générateur de site statique à tirer dans les liens pour les principaux nav, donc ils ont besoin de regarder le nom sur toutes les pages du site.J'ai toujours entendu dire que les url avec un slash (
/
) a appelé relatif à la racine du urls. En outre, il y a protocole relatif (parfois appelé régime relatif) url:<script src="//domain.com/...
vous pouvez utiliser le
<base>
balise de résoudre ce problème en particulier: avoir une url de base de la même dans chaque page, puis utilisez " img/logo.png' alors c'est une édition par page à déplacer le site.Merci, tobyodavies, qui a résolu mon problème. Lorsque vous définissez une URL de base que vous devez vous assurer que vous n'incluez pas l'un des principaux (
/
) avant de vos actifs.OriginalL'auteur tobyodavies
Je suis conscient que je suis un peu en retard pour le jeu sur ce point, mais vous devez vraiment être à l'aide de Rails étiquettes d'actifs au lieu de HTML brut ici.
Par exemple, au lieu d'utiliser:
Vous devez utiliser:
En supposant que:
/img/
dans votre config.rb fichierAlternativement, vous pouvez référencer CSS avec:
Fichiers Javascript peuvent être fournis avec:
Depuis Intermédiaire vous permet de contrôler si oui ou non les actifs sont référencés relativement (en enlevant le commentaire de quelques lignes dans le fichier config.rb), à l'aide de Rails d'inventaire de faire beaucoup plus de sens que la page HTML statique. Je recommande fortement de commutation si vous ne l'avez pas déjà fait. Si vous avez d'autres questions sur ay de ces marques ou de l'ERB syntaxe, n'hésitez pas à posez vos questions ici!
OriginalL'auteur Ray Brown