2017-01-06 5 views
6

Używam bundle exec jekyll build && bundle exec jekyll serve --watch do generowania folderu _site, który następnie przesyłamy przez FTP do serwera WWW. Plik index.html w folderze _site zawiera łącza do lokalnego adresu URL "localhost", a nie poprawny adres URL witryny, powodując niedziałające łącza. Wdrażanie za pomocą FTP prawdopodobnie oznacza, że ​​tekst linku zostanie wdrożony na serwerze produkcyjnym, a użytkownicy zostaną przekierowani do "localhost" zamiast do adresu URL naszego bloga. Jak mogę to naprawić? Nie napotkałem wcześniej żadnych problemów.Kompilacja Jekyll umieszcza łącza "localhost" w plikach _site (produkcja)

Fragment index.html:

<link rel="stylesheet" type="text/css" href="/blog/slick/slick.css"/> 
    <link rel="stylesheet" type="text/css" href="/blog/slick/slick-theme.css"/> 
    <link rel="stylesheet" href="/blog/css/main.css"> 
    <link rel="canonical" href="http://localhost:4000/blog/"> 
    <link rel="alternate" type="application/rss+xml" title="The WordBrewery Blog | Language Untapped" href="http://localhost:4000/blog/feed.xml"> 

Fragment _config.yml:

title: "The WordBrewery Blog | Language Untapped" 
description: "WordBrewery's home for aspiring polyglots. Study tips, book and app reviews, grammar and vocabulary lessons, interviews, and other language-learning resources." 
baseurl: "/blog" # the subpath of your site 
url: "https://wordbrewery.com" # the base hostname & protocol for your site 
feed: <link rel="alternate" type="application/rss+xml" title="{{ site.name }}" href="{{ site.url }}/feed.xml" target="_blank"> 
wordbrewery: "[WordBrewery](http://wordbrewery.com){:target='_blank'}" 
languages-offered: "twenty" 

# Jekyll settings 

markdown: kramdown 
permalink: /:categories/:title/ 
gems: [jekyll, jekyll-archives, github-pages, bundler, bourbon, neat, jekyll-seo-tag, classifier-reborn, jekyll-feed, nokogiri, jekyll-sitemap, "jekyll/figure"] 
encoding: utf-8 
lsi: true 
timezone: America/Denver 
logo: "{{ site.url }}/assets/images/logo-gold.jpg" 
avatar: "{{ site.url }}/assets/images/fb-profile.jpg" 
locale: "en_US" 

# YAML defaults 

defaults: 
    scope: 
     path: "" # an empty string here means all files in the project 
    values: 
     layout: post 
     title: "WordBrewery now has native-speaker audio for beginning Spanish" 
     author: "WordBrewery" 
     category: Learning 
     image: SpanishSpain.jpg 
     featured: true 
    sass: 
     sass_dir: _sass 
+0

Bez kodu jekyll trudno jest debugować. Dowolny adres URL repozytorium? A może treść "_includes/head.html". –

Odpowiedz

8

Wystarczy zbudować swoją stronę (nie jej służyć lokalnie), więc wtedy można wgrać wygenerował pliki na serwerze:

$ bundle exec jekyll build 

To by wygenerowało łącze kanoniczne o wartości con zmienna figurująca url w _config.yml.

<link rel="canonical" href="https://wordbrewery.com/blog/"> 

Jeśli prowadzisz serve polecenie Jekyll, wtedy wartość adresu URL byłoby localhost ponieważ jego celem jest służyć lokalnej instancji do debugowania aplikacji Jekyll.

<link rel="canonical" href="http://localhost:4000/blog/"> 

Albo jeszcze lepiej określając produkcję jako zmienna environment więc można wybrać do wykonywania części kodu w zależności od środowiska, w którym jesteś, domyślnie Jekyll ustawia environmnet zmienna rozwój:

$ JEKYLL_ENV=production bundle exec jekyll build 

Następnie w kodzie można umieścić coś takiego:

{% if jekyll.environment == "production" %} 
    {% include adsense.html %} 
{% endif %} 
0

Dla ludzi natknięcia się to w późniejszym terminie jak ja-I okazało się, że jekyll build ing podczas gdy miałem inny proces jekyll serve ing jednocześnie doprowadziło do localhost wliczone jest niepożądany w plikach html.

Anulowanie innego procesu serve zadziałało przede mną.