Ich habe einen gh-pages
Zweig für ein Projekt erstellt, an dem ich bei GitHub arbeite.
Ich verwende Sublime-Text, um die Website lokal zu erstellen. Mein Problem ist, dass alle Links zu Javascrips, Bildern und CSS-Dateien ungültig sind, wenn diese an GitHub gesendet werden.
Zum Beispiel habe ich das in meinem Kopfteil.
<link href="assets/css/common.css" rel="stylesheet">
Dies funktioniert lokal hervorragend, funktioniert jedoch nicht über GitHub, da die Links nicht mithilfe des Repository-Namens als Teil der URL aufgelöst werden.
Es fragt nach:
http://[user].github.io/assets/css/common.css
wann es hätte fragen sollen:
http://[user].github.io/[repo]/assets/css/common.css.
Ich könnte natürlich den Repo-Namen als Teil der URL einfügen, aber das würde verhindern, dass meine Site während der Entwicklung lokal funktioniert.
Irgendeine Idee, wie man damit umgeht?
Antworten:
Welchen Browser verwenden Sie? Sind Sie sicher, dass dies passiert? Weil es nicht sollte. Wenn Sie eine relative URL in einen Link einfügen, wird diese relativ zur URL des Dokuments aufgelöst, das den Link enthält. Mit anderen Worten, wenn Sie einschließen
<link href="assets/css/common.css" rel="stylesheet">
In einem HTML-Dokument unter
http://www.foo.com/bar/doc.html
wird der Link zuassets/css/common.css
aufgelöst, indem er an das Präfix der URL des HTML-Dokuments ohne den letzten Teil des Pfads (ohnedoc.html
) angehängt wird, dh der Link wird aufgelösthttp://www.foo.com/bar/assets/css/common.css
, nichthttp://www.foo.com/assets/css/common.css
wie Sie behaupten.Zeigen Sie beispielsweise die Quelle der Twitter Bootstrap-Webseite an: http://twitter.github.io/bootstrap/ . Beachten Sie die Stilverknüpfungen oben, angegeben als
<link href="assets/css/bootstrap.css" rel="stylesheet">
. Dieser Link wird korrekt aufgelösthttp://twitter.github.io/bootstrap/assets/css/bootstrap.css
, dh er enthält den Reponamen.quelle
href="https://stackoverflow.com/"
?Sie müssen Jekyll verwenden .
Wörtlich aus der entsprechenden Dokumentation kopieren :
(Anscheinend hat das erst vor ein paar Monaten jemand herausgefunden .)
quelle
{{ site.github.url }}
Sie könnten einfach sagen
<base href="/[repo]/">
innerhalb des
<head>
Tags, und es löst das Problem.Sie können diese Lösung auch verbessern, indem Sie Folgendes einstellen:
<base href="{{ site.baseurl }}/">
und dann
site.baseurl
für den lokalen Test auf leere Zeichenfolge setzen.quelle
Dies sollte im Dezember 2016, dreieinhalb Jahre später, kein Thema mehr sein.
Siehe " Relative Links für GitHub-Seiten ", veröffentlicht von Ben Balter :
(das ist ab Januar 2013)
[a relative link](another-page.md)
Und vergessen Sie nicht, dass Sie Ihre Seiten seit August 2016 direkt in der
master
Filiale veröffentlichen können (nicht immer in dergh-pages
Filiale).Und seit Dezember 2016 brauchen Sie nicht einmal
Jekyll
oderindex.md
. Einfache Markdown-Dateien reichen aus.quelle
html table
in meiner .md-Datei während des Github-Seitenprozesses nicht in .html konvertiert werden. Dh in meiner .md-Datei befindet sich eine HTML-Tabelle, die relative Links zu anderen .md-Dateien in meinem Repo enthält. Die Tabelle wird auf github.com ordnungsgemäß gerendert, aber auf Github-Seiten bleiben die relativen Links als MD-Dateien erhalten. Warum?Es scheint, dass Github Pages nicht sehr reaktionsschnell ist. Obwohl neue Dateien sofort verfügbar sind, werden geänderte Dateien aufgrund von Caching oder Ähnlichem nicht sofort angezeigt.
Nach ungefähr 15 Minuten Wartezeit ist alles in Ordnung.
quelle
Die beste Option ist jetzt der
relative_url
Filter:<link href="{{ '/assets/css/common.css' | relative_url }}" rel="stylesheet">
quelle
Eine andere Möglichkeit besteht darin, ein neues Repo speziell für die Webseiten github.io zu erstellen. Wenn Sie das Repo wie
[user].github.io
auf github benennen, wird es unter veröffentlichthttps://[user].github.io
und Sie können vermeiden, dass der Repo-Name vollständig im URL-Pfad enthalten ist . Offensichtlich ist der Nachteil, dass Sie nur 1 Repo wie dieses pro Github-Benutzer haben können, so dass es möglicherweise nicht Ihren Anforderungen entspricht, da bin ich mir nicht sicher.quelle