Хьюго: добавление http-equiv="refresh" content="0 при сборке. Остановить это?

У меня есть очень маленький сайт Hugo, который я пытаюсь развернуть на Netlify. Я получаю неожиданный бесконечный цикл, когда я создаю сайт, хотя, похоже, он работает в dev, используя hugo serve --ignoreCache --disableFastRender --noHTTPCache -D.

Сайт состоит из двух страниц:

  • /
  • /contact/

Что касается страницы контактов, она находится прямо в папке content и выглядит следующим образом:

---
title: "Contact"
draft: false
date: "2020-02-25"
type: "page"
layout: "page"
aliases:
- /contact.html
- /blog/contact/
- /blog/contact.html
---

{{< contactformwide >}}

Затем у меня есть контактная форма в themes/MYTHEME/layouts/shortcodes/contactformwide.html.

У меня есть очень странная ошибка, когда я создаю сайт с помощью hugo serve --ignoreCache --disableFastRender --noHTTPCache -D, он работает нормально. Когда я пытаюсь развернуть его для netlify или создать локально с помощью hugo, страница /contact/ застревает в бесконечном цикле. Никаких ошибок при построении не возникает, просто кажется, что он пытается снова и снова загрузить страницу, но безрезультатно.

Я попытался настроить baseURL в моем config.yaml на соответствующий домен для производства, но это не помогло.

HTML страницы, которая отображается (и перерисовывается, и перерисовывается) в /contact/, выглядит следующим образом (это версия от Netlify, следовательно, mellifluous-marzipan):

    <!DOCTYPE html>
    <html>
        <head>
            <title>https://mellifluous-marzipan-3893e2.netlify.app/contact/</title>
            <link rel = "canonical" href = "https://mellifluous-marzipan-3893e2.netlify.app/contact/"/>
            <meta name = "robots" content = "noindex">
            <meta charset = "utf-8" />
            <meta http-equiv = "refresh" content = "0; url=https://mellifluous-marzipan-3893e2.netlify.app/contact/" />
        </head>
    </html>

Этот HTML не имеет практически никакого отношения, за исключением первых четырех строк, к тому, что я ожидаю отобразить.

Я предполагаю, что проблема в том, что <meta http-equiv = "refresh" ..., но откуда это? Почему он не отображается в dev? У меня есть только следующие два http-equiv в моем обычном head, и основной сайт (использует тот же head) прямо сейчас работает (EDIT: ошибка исправлена), так что вы можете увидеть, как выглядит head:

  <meta http-equiv = "X-UA-Compatible" content = "IE=edge,chrome=1">
  <meta http-equiv = "content-type" content = "text/html; charset=utf-8" />

Обновлено: я только что заметил, что страница, которую я хочу (то, что я получаю как webaddress/contact в своей среде разработки, хранится в public/contact/contact.html в файле build.

Тот же результат возникает, если я нажимаю ссылку из / (что работает нормально) или вручную перехожу к /contact/.

Кто-нибудь может помочь мне взломать это? Я могу предоставить доступ к репо и т. д., но, может быть, ответы очевидны, и я просто слишком нуб, чтобы это увидеть? Может быть, это связано с псевдонимами страницы /contact/?

Если это поможет, когда для baseURL был установлен другой URL-адрес, я просто получал 404 от baseURL/contact/, на который меня перенаправляли, а не из этого бесконечного цикла.

EDIT: я обнаружил, что правильная страница находится на сайте netlify, здесь (EDIT: ошибка исправлена). Он помещается в /public/contact/index.html.

Обновлено: Также оказывается, что когда я помещаю url: contact на передний план layouts/contact.md, public/contact.html перестает существовать, когда сайт создается, и остается только public/contact/index.html.

Обновлено: Когда я помещаю следующее в передний план, я получаю public/contact.html (с правильным содержанием / страницей) и ТАК ЖЕ СТРАНИЦУ ТАКЖЕ в public/contact/index.html.

Обновлено: Оказывается, между /contact, /contact/ и contact/ была некоторая путаница. Первоначально я ссылался на /contact/, и исправление, похоже, просто изменило мои ссылки на /contact. Не уверен, почему это привело к бесконечному перенаправлению, но теперь это работает.

Можете ли вы добавить свой код для рабочей страницы и/или попробовать избавиться от псевдонимов и посмотреть, работает ли это?

Gage 02.04.2023 04:24

@Gage: отредактировал вопрос. На самом деле на сайте есть правильная страница, маршрутизация, похоже, работает не так, как ожидалось.

NotAnAmbiTurner 02.04.2023 07:44
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
2
79
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Цикл перенаправления содержит два разных перенаправления:

  • /contact/ ==> /contact. (код ответа 301)

    $ curl -i 'https://mellifluous-marzipan-3893e2.netlify.app/contact/'
    HTTP/2 301 
    // other headers and response body truncated
    
  • /contact ==> /contact/. (перенаправление клиента с помощью http-equiv = "refresh", псевдонимы реализованы с помощью аналогичного механизма. См. Как работают псевдонимы).

    $ curl -i 'https://mellifluous-marzipan-3893e2.netlify.app/contact'
    HTTP/2 200
    // other headers truncated and response body formatted
    
    <!DOCTYPE html>
    <html>
      <head>
        <title>https://mellifluous-marzipan-3893e2.netlify.app/contact/</title>
        <link
          rel = "canonical"
          href = "https://mellifluous-marzipan-3893e2.netlify.app/contact/"
        />
        <meta name = "robots" content = "noindex" />
        <meta charset = "utf-8" />
        <meta
          http-equiv = "refresh"
          content = "0; url=https://mellifluous-marzipan-3893e2.netlify.app/contact/"
        />
      </head>
    </html>
    

Кажется, он первый виноват. Скорее всего неправильно настроены правила перенаправления netlify. Пожалуйста, проверьте правила в следующих файлах, чтобы увидеть, если что-то не так:

  • _redirects
  • netlify.toml

(см. Редиректы и рерайты).

Спасибо @Зик! Единственное, я получаю такое поведение и на своих локальных сборках (например, когда я открываю filesystem://contact.html), так что я не думаю, что netlify может быть виноват? Кроме того, у меня нет перенаправлений в netlify.toml и файла _redirects. Я думаю, что ваш поиск завитков будет полезен, спасибо!

NotAnAmbiTurner 02.04.2023 17:32

Но вы сказали, что «когда я создаю сайт с помощью hugo serve --ignoreCache --disableFastRender --noHTTPCache -D, он работает нормально». Я в замешательстве. Можете ли вы предоставить минимальный репродуктор?

Zeke Lu 03.04.2023 03:42

оказывается, ответ был в том, чтобы изменить мои ссылки на /contact вместо /contact/. До сих пор не уверен, почему последнее приводило к бесконечному перенаправлению при запуске hugo (то есть при запуске из папки pulbic), а не при hugo serve --ignoreCache --disableFastRender --noHTTPCache -D... но это исправлено. Спасибо за помощь! :)

NotAnAmbiTurner 04.04.2023 17:52

хм, это странно, потому что /contact должен привести ко второму перенаправлению, указанному выше, в соответствии с предыдущим тестом. Можете ли вы предоставить репродуктор?

Zeke Lu 04.04.2023 17:59

На данный момент я не могу - я потерял ошибку (к счастью). Хотя это было странно. Я был очень удивлен, что ошибка возникла в общедоступной сборке, а не в среде разработки — это, пожалуй, самая странная часть.

NotAnAmbiTurner 04.04.2023 18:23

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