Перенаправление Github Pages работает только локально, но не на удаленном сервере Github (получил 404)

Когда я нажимаю на теги справа от моих страниц Github, у меня всегда появляется страница 404. Однако, когда я просматриваю его локально, перенаправление работает нормально:

Интересно, это как-то связано с моим _config.yml. Я пробовал разные строки URL и baseurl, но так и не смог решить эту проблему.

(Примечание: эта тема была взята из Chirpy)

Спасибо!


Часть моего config.yml:

title: Changyu Yan

url: 'https://changyuyan.github.io'

# Only if your site type is GitHub Project sites and doesn't have a custom domain,
# change below value to '/projectname'.
baseurl: ''
timezone: America/Los_Angeles

google_analytics:
  id: ''
  pv:
    # The Google Analytics pageviews switch.
    # DO NOT enable it unless you know how to deploy the Google Analytics superProxy.
    enabled: false
    # the next options only valid when `google_analytics.pv` is enabled.
    proxy_url: ''
    proxy_endpoint: ''
    cache: false  # pv data local cache, good for the users from GFW area.

# boolean type, the global switch for ToC in posts.
toc: true

paginate: 10

kramdown:
  syntax_highlighter: rouge
  syntax_highlighter_opts:   # Rouge Options › https://github.com/jneen/rouge#full-options
    css_class: highlight
    # default_lang: console
    span:
      line_numbers: false
    block:
      line_numbers: true
      start_line: 1

# DO NOT change this unless you're a Pro user on Jekyll and Web development,
# or you think you're smart enough to change other relevant URLs within this template.
permalink: /posts/:title/

collections:
  tabs:
    output: true
    sort_by: order


defaults:
  -
    scope:
      path: ''          # An empty string here means all files in the project
      type: posts
    values:
      layout: post
      comments: true    # Enable comments in posts.
      toc: true         # Display TOC column in posts.
      breadcrumb:
        -
          label: Posts
          url: /
  -
    scope:
      path: _drafts
    values:
      comments: false
  -
    scope:
      path: index.html
    values:
      breadcrumb:
        -
          label: Posts
  -
    scope:
      path: tags
    values:
      breadcrumb:
        -
          label: Home
          url: /
        -
          label: Tags
          url: /tabs/tags/
  -
    scope:
      path: categories
    values:
      breadcrumb:
        -
          label: Home
          url: /
        -
          label: Categories
          url: /tabs/categories/
  -
    scope:
      path: ''
      type: tabs             # see `site.collections`
    values:
      layout: page
      dynamic_title: true    # Hide title in mobile screens.
      breadcrumb:
        -
          label: Home
          url: /

sass:
  sass_dir: /assets/css
  style: compressed

compress_html:
  clippings: all
  comments: all
  endings: all
  profile: false
  blanklines: false
  ignore:
    envs: []

exclude:
  - vendor
  - Gemfile.lock
  - Gemfile
  - tools
  - docs
  - README.md
  - LICENSE

jekyll-archives:
  enabled: [categories, tags]
  layouts:
    category: category
    tag: tag
  permalinks:
    tag: /tags/:name/
    category: /categories/:name/

Можете ли вы поделиться фрагментами кода для (1) создания URL-адреса, который не работает должным образом, и (2) части вашего _config.yaml, которая устанавливает базовый URL-адрес?

vahlala 21.12.2020 21:54

Просто обновил описание с кодом: p

SE_ 21.12.2020 21:59
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
384
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

В верхней части вашего _config.yml установите baseurl имя репозитория проекта в соответствии с инструкциями:

# Only if your site type is GitHub Project sites and doesn't have a custom domain,
# change below value to '/projectname'.
baseurl: '/changyuyan.github.io'

Спасибо. Я пробовал это. Все равно не работает :(

SE_ 22.12.2020 19:48

@Erin, каковы значения URL-адресов, которые дают 404?

vahlala 22.12.2020 21:10

Просто все ссылки, если я нажму на теги справа. Например, этот: changyuyan.github.io/changyuyan.github.io/tags/…

SE_ 23.12.2020 00:59
Ответ принят как подходящий

Архивы работают локально, а не на страницах GitHub, потому что гем jekyll-archives не поддерживается на страницах GitHub . В примечаниях к Chirpy в разделе Развертывание на страницах GitHub можно увидеть вариант использования GitHub Actions . Это должно позволить вам запускать неподдерживаемые плагины (есть хороший учебник от Aneejian).

Другой вариант — вручную создать все страницы тегов. Вам нужно будет создать каталог tag и внутри него создать все файлы тегов (software-engineering.html). Внутри них вы запустите цикл for для этого тега. У вас есть несколько вариантов:

{% for post in site.tags.software-engineering %}

или

{% for post in site.posts | where: 'tag', 'software-engineering' %}

Есть и другие, которые могут лучше подойти для вашего варианта использования.

Согласно обсуждению baseurl, вам это не нужно, если вы не используете каталог проекта. Если вы хотели https://changyuyan.github.io/blog/tags/software-engineering/, вам нужно было добавить baseurl: '/blog ...но не похоже, что вы этого хотите.

Другие вопросы по теме