Pytanie Strony GitHub i ścieżki względne


Stworzyłem gh-pages gałąź dla projektu, nad którym pracuję w GitHub.

Używam tekstu Sublime do lokalnego tworzenia witryny, a moim problemem jest to, że kiedy jest on przesyłany do GitHub, wszystkie linki do javascrips, images i css są nieprawidłowe.

Na przykład mam to w mojej sekcji głowy.

<link href="assets/css/common.css" rel="stylesheet">

Działa to świetnie lokalnie, ale nie działa z GitHub, ponieważ łącza nie są rozwiązywane przy użyciu nazwy repozytorium jako części adresu URL.

Prosi o:

http://[user].github.io/assets/css/common.css

kiedy powinien był prosić o:

http://[user].github.io/[repo]/assets/css/common.css.

Mogłem oczywiście umieścić nazwę repo w ramach adresu URL, ale to uniemożliwiłoby mojej witrynie pracę lokalną podczas programowania.

Masz pomysł, jak sobie z tym poradzić?


47
2018-05-01 10:16


pochodzenie


ta sama wątpliwość tutaj. - diofeher
To mi się przytrafia. Udało ci się znaleźć przyczynę tego? - lolmaus - Andrey Mikhaylov
Uwaga: w grudniu 2016 r. Strony GitHub uległy znacznej zmianie. Widzieć moja odpowiedź poniżej - VonC


Odpowiedzi:


Z której przeglądarki korzystasz? Jesteś pewien, że tak się dzieje? Ponieważ nie powinien. Jeśli podasz względny adres URL w linku, zostanie on rozstrzygnięty względem adresu URL dokumentu zawierającego link. Innymi słowy, kiedy je uwzględnisz

<link href="assets/css/common.css" rel="stylesheet">

w dokumencie HTML na http://www.foo.com/bar/doc.html, link do assets/css/common.css zostanie rozwiązany przez dołączenie go do przedrostka adresu URL dokumentu HTML bez ostatniej części ścieżki (bez doc.html), tzn. link zostanie rozwiązany http://www.foo.com/bar/assets/css/common.css, nie do http://www.foo.com/assets/css/common.css jak twierdzisz.

Na przykład wyświetl źródło strony internetowej Bootstrap na Twitterze: http://twitter.github.io/bootstrap/. Zwróć uwagę na linki stylów u góry, określone jako <link href="assets/css/bootstrap.css" rel="stylesheet">. Ten link poprawnie rozwiązuje się http://twitter.github.io/bootstrap/assets/css/bootstrap.css, to znaczy zawiera nazwę repozytorium.


7
2018-05-01 20:10



jak sobie radzisz href="/" ? - Akabab


Musisz użyj Jekyll.

Kopiowanie dosłowne z odpowiednią dokumentację:

Czasami dobrze jest przejrzeć swoją stronę Jekyll, zanim ją wypchniesz    gh-pages Oddział do GitHub. Jednak adres URL podobny do podkatalogu   struktura GitHub używa dla stron projektu komplikuje właściwe   rozdzielczość adresów URL. Oto podejście do korzystania z GitHub   Struktura adresu URL strony projektu (username.github.io/project-name/) podczas   utrzymywanie możliwości lokalnego podglądu strony Jekyll.

  1. W _config.yml, Ustaw baseurl opcja do /project-name - zwróć uwagę na wiodące cięcie i brak końcowego ukośnika.

  2. Odwołując się do plików JS lub CSS, wykonaj to w następujący sposób: {{ site.baseurl}}/path/to/css.css - zanotuj ukośnik zaraz po nim   zmienna (tuż przed "ścieżką").

  3. Robiąc linki bezpośrednie lub linki wewnętrzne, wykonaj to w następujący sposób: {{ site.baseurl }}{{ post.url }} - zauważ, że nie ma żadnego cięcia między   dwie zmienne.

  4. Na koniec, jeśli chcesz wyświetlić podgląd witryny przed jej użyciem / wdrożeniem jekyll serve, pamiętaj, aby przekazać puste   ciąg do --baseurl opcję, dzięki czemu można wyświetlić wszystko w    localhost:4000 normalnie (bez / nazwa projektu na początku):    jekyll serve --baseurl ''

W ten sposób możesz podejrzeć lokalnie swoją witrynę z katalogu głównego witryny   localhost, ale gdy GitHub generuje twoje strony z gh-pages   Oddział wszystkie adresy URL zaczną się /project-name i rozwiązać   prawidłowo.

(Najwyraźniej ktoś to wymyślił zaledwie kilka miesięcy temu.)


56
2017-10-04 05:25



Tak, ten powinien być zaakceptowaną odpowiedzią. Wydaje się nieco zawikłany dla zwykłego przypadku użycia Jekyll - Zastanawiam się, czy istnieje powód, dla którego domyślnie nie korzystają z site.baseurl? - Kevin Qi
Chociaż ma to kilka lat i zmieniła się dokumentacja, to rozwiązanie sprawdziło się w stosunku do zaleceń zawartych w dokumentach Jekyll dotyczących używania {{ site.github.url }} - Kyle Shevlin


To nie powinno być już problemem w grudniu 2016 r., 3 i pół roku później.
Widzieć "Względne linki do stron GitHub", opublikowany przez Ben Balter:

Podczas tworzenia Markdown możesz używać względnych linków na GitHub.com na chwilę.

(to jest od stycznia 2013 r.)

Teraz te linki będą działać po opublikowaniu przez Strony GitHub.

Jeśli masz plik Markdown w swoim repozytorium na docs/page.mdi chcesz połączyć z tego pliku do docs/another-page.mdmożesz to zrobić za pomocą następującego znacznika:

[a relative link](another-page.md)

Gdy przeglądasz plik źródłowy na GitHub.com, odnośne łącze będzie działało, tak jak było wcześniej, ale teraz, kiedy opublikujesz ten plik za pomocą GitHub Pages, link zostanie cicho przetłumaczony na docs/another-page.html w celu dopasowania do opublikowanego adresu URL strony docelowej.

Pod maską używamy open source Jekyll Relative Links wtyczka, która jest domyślnie włączona dla wszystkich kompilacji.

Względne linki na stronach GitHub uwzględniają również niestandardowe linki bezpośrednie (np. permalink: /docs/page/) w głównej sprawie pliku YAML, a także, odpowiednio, wstępnego podstawowego adresu stron projektu, dzięki czemu linki będą działały w dowolnym kontekście.

I nie zapominaj o tym od sierpnia 2016 r. możesz publikować swoje strony bezpośrednio z master gałąź (nie zawsze gh-pages gałąź)

I od tego czasu Grudnia 2016 r, nawet nie potrzebujesz Jekyll lub index.md. Wystarczy proste pliki ze zniżkami.


5
2017-12-13 18:21





Możesz po prostu umieścić

<base href="/[repo]/">

w środku <head> tag i rozwiązuje problem.

Możesz również ulepszyć to rozwiązanie, ustawiając:

<base href="{{ site.baseurl }}/">

a następnie ustawić site.baseurl aby opróżnić ciąg dla testów lokalnych.


1
2018-04-20 14:53





Inną opcją jest utworzenie nowego repo przeznaczonego specjalnie dla stron github.io. Jeśli nazwiesz repo jako [user].github.io na github, to zostanie opublikowane na https://[user].github.io i możesz unikaj całkowicie zmiany nazwy repo w ścieżce URL. Oczywiście wadą jest to, że możesz mieć tylko jedno takie powtórzenie na użytkownika github, więc może nie odpowiadać twoim potrzebom, nie jestem pewien.


0
2017-10-29 11:54





Wygląda na to, że Github Pages nie reaguje zbyt szybko. Mimo że natychmiast udostępnia nowe pliki, zmodyfikowane pliki nie pojawią się natychmiast z powodu buforowania lub czegoś podobnego.

Po odczekaniu około 15 minut wszystko jest w porządku.


-1
2017-08-27 10:06