«Страница не найдена» при попытке доступа к сайту, развернутому на Netlify

Я запускаю статический сайт blogdown и развертываю его на Netlify. Я использую исходные файлы на GitHub, Хьюго создает сайт, а Netlify развертывает его.

Netlify сообщает, что сайт активен (журнал развертывания прилагается внизу), но когда я пытаюсь просмотреть свой сайт, все, что я вижу, это сообщение об ошибке Netlify:

Page Not found

Looks like you've followed a broken link or entered a URL that doesn't exist on this site.

← Back to our site

Что может быть причиной?


Мой репозиторий на GitHub: https://github.com/taraskaduk/taraskaduk

Мой URL, по которому должен быть сайт: https://taraskaduk.com/

Мои настройки развертывания:

Repository: https://github.com/taraskaduk/taraskaduk
Build command: hugo
Publish directory: public
Production branch: master
Branch deploys: Deploy only the production branch and its deploy previews
Public deploy logs: Logs are public

Версия Hugo (пробовал разные)

HUGO_VERSION 0.37.1

Мой последний журнал развертывания:

9:56:27 PM: Build ready to start
9:56:28 PM: Fetching cached dependencies
9:56:29 PM: Starting to download cache of 172.4MB
9:56:30 PM: Finished downloading cache in 1.74774892s
9:56:30 PM: Starting to extract cache
9:56:33 PM: Finished extracting cache in 2.59393707s
9:56:33 PM: Finished fetching cache in 4.428746301s
9:56:33 PM: Starting to prepare the repo for build
9:56:33 PM: Preparing Git Reference refs/heads/master
9:56:34 PM: Starting build script
9:56:34 PM: Installing dependencies
9:56:35 PM: Started restoring cached node version
9:56:37 PM: Finished restoring cached node version
9:56:37 PM: v8.11.2 is already installed.
9:56:38 PM: Now using node v8.11.2 (npm v5.6.0)
9:56:38 PM: Attempting ruby version 2.3.6, read from environment
9:56:39 PM: Using ruby version 2.3.6
9:56:39 PM: Using PHP version 5.6
9:56:39 PM: Installing Hugo 0.37.1
9:56:39 PM: Started restoring cached go cache
9:56:39 PM: Finished restoring cached go cache
9:56:39 PM: unset GOOS;
9:56:39 PM: unset GOARCH;
9:56:39 PM: export GOROOT='/opt/buildhome/.gimme/versions/go1.10.linux.amd64';
9:56:39 PM: export PATH = "/opt/buildhome/.gimme/versions/go1.10.linux.amd64/bin:${PATH}";
9:56:39 PM: go version >&2;
9:56:39 PM: export GIMME_ENV='/opt/buildhome/.gimme/env/go1.10.linux.amd64.env';
9:56:39 PM: go version go1.10 linux/amd64
9:56:39 PM: Installing missing commands
9:56:40 PM: Verify run directory
9:56:40 PM: Executing user command: hugo
9:56:40 PM: Building sites …
9:56:40 PM: 
9:56:40 PM:                    | EN
9:56:40 PM: +------------------+----+
9:56:40 PM:   Pages            |  6
9:56:40 PM:   Paginator pages  |  0
9:56:40 PM:   Non-page files   | 49
9:56:40 PM:   Static files     | 39
9:56:40 PM:   Processed images |  0
9:56:40 PM:   Aliases          |  4
9:56:40 PM:   Sitemaps         |  1
9:56:40 PM:   Cleaned          |  0
9:56:40 PM: Total in 522 ms
9:56:40 PM: Caching artifacts
9:56:40 PM: Started saving pip cache
9:56:40 PM: Finished saving pip cache
9:56:40 PM: Started saving emacs cask dependencies
9:56:40 PM: Finished saving emacs cask dependencies
9:56:40 PM: Started saving maven dependencies
9:56:40 PM: Finished saving maven dependencies
9:56:40 PM: Started saving boot dependencies
9:56:40 PM: Finished saving boot dependencies
9:56:40 PM: Started saving go dependencies
9:56:40 PM: Finished saving go dependencies
9:56:40 PM: Build script success
9:56:40 PM: Starting to deploy site from 'public'
9:56:41 PM: Starting post processing
9:56:41 PM: Post processing done
9:56:41 PM: Site is live

Вы пробовали установить свой baseurl в config.toml на адрес своего веб-сайта (заканчивающийся косой чертой)? Я не видел, чтобы это приводило к "Страница не найдена", но я видел, как люди говорили о это вызывает другие проблемы

aosmith 08.06.2018 04:33

Да. На самом деле так оно и было. Я только пытался изменить его на «/», чтобы посмотреть, делает ли он что-нибудь. Это не ...

Taraas 08.06.2018 04:41

И на всякий случай, когда вы обслуживаете сайт, ваш сайт выглядит хорошо на местном уровне? Я обнаружил несколько вещей, которые могут иметь отношение к делу, но находятся над моей головой; большая разница, которую я вижу на вашем веб-сайте, - это использование подмодулей, который затем может быть связан с netlify и перенаправление (также обсуждается здесь.

aosmith 08.06.2018 15:41

Да ладно, локально выглядит отлично! Вчера и сегодня я переключился на подмодули, пытаясь устранить неполадки (я подумал, что, возможно, подмодуль темы сделает это). Проблема началась до того, как я перешел на подмодули. Это началось, когда я попытался остановить создание сайта локально (еще один вопрос, который я разместил, и вы ответили) stackoverflow.com/questions/50750447/…

Taraas 08.06.2018 16:12

Ну блин, у меня нет идей. Весь поток «перенаправления» заставил меня подумать, что он может иметь какое-то отношение к index.html, но насколько я могу судить, я использую тот же самый для своего [веб-сайта академической тематики]) github.com/aosmith16/academic). Надеюсь, ты во всем разберешься!

aosmith 08.06.2018 16:36

Ха-ха, все равно спасибо! Я сделал то же, что и вы, и проверил репозитории на github у других людей (кто бы ни запустил их сайт по академической теме) - мог найти что-нибудь другое!

Taraas 08.06.2018 16:47

Два вопроса: 1) Вы действительно добавили свой домен в Netlify? netlify.com/docs/custom-domains/#assigning-a-custom-domain 2) Какой субдомен Netlify у вашего сайта?

Yihui Xie 08.06.2018 17:04

@YihuiXie, да, давным-давно, когда я впервые развернул сайт (в то время создавал его локально, лучше я не знал). Все было в порядке. С тех пор я не менял эти настройки. Это из настроек Netlify. Поддомен по умолчанию - taraskaduk.netlify.com; Основной домен - taraskaduk.com

Taraas 08.06.2018 17:12

@YihuiXie, моя проблема может быть похожей на это: github.com/developit/preact-boilerplate/issues/101 Есть ли необходимость возиться с перенаправлениями, или это то, что blogdown обрабатывает в фоновом режиме?

Taraas 08.06.2018 17:15

Я не думаю, что ваша проблема связана с переадресацией, поскольку у вас нет static/_redirects. Я также не думаю, что это имеет отношение к blogdown, поскольку он отлично работает локально. У меня закончились идеи вроде @aosmith. Вы можете обратиться в службу поддержки Netlify и узнать, есть ли у них какие-либо идеи.

Yihui Xie 08.06.2018 19:56

На самом деле вы можете изменить команду hugo на hugo -v на Netlify, что может дать больше информации.

Yihui Xie 08.06.2018 19:59

@YihuiXie, он действительно раскрыл кучу информации! Я получаю кучу длинных сообщений WARN, все из которых начинаются с Unable to locate layout for .... Насколько я понимаю, есть проблема с темой или, скорее, с тем, как я ее настроил?

Taraas 08.06.2018 20:16

Позвольте нам продолжить обсуждение в чате.

Taraas 08.06.2018 20:33

@YihuiXie Мне нужно исправить проблему (см. Решение, опубликованное ниже). Но я не уверен, почему это не сработало и почему то, что я сделал, исправило ...

Taraas 08.06.2018 22:47
blog.almightytricks.com/2020/10/14/… Хорошая статья по устранению ошибки 404
Sangram Badi 19.10.2020 06:35
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
12
15
25 594
9
Перейти к ответу Данный вопрос помечен как решенный

Ответы 9

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

Отказ от ответственности: я работаю в группе поддержки @ Netlify

Всегда разрешено обращаться в службу поддержки Netlify по таким вопросам, хотя мы действительно можем помочь вам только отладить, что отличает наш процесс сборки от вашего локального, а не отладку исходного кода. Позвольте мне подробнее рассказать о некоторых передовых методах работы, о которых рассказали комментаторы, и дать несколько неочевидных предложений, которые помогут вам в дальнейшей отладке.

Во-первых, как было предложено (спасибо @aosmith!) BaseURL должен быть установлен на / - это лучшая практика, которая позволит вашему сайту работать локально (http: // localhost), но также и на Netlify - через http, https, развернуть превью и, наконец, на других хостинг-провайдеры, а прокси и т. д. Просто сделай это :)

Во-вторых, вы могли иметь перенаправления не только в файле _redirects, но и в netlify.toml, но я также не думаю, что это проблема.

Когда вы получаете 404 на свой основной URL, это означает, что у вас нет /index.html. Я не могу сказать, в чем состоит основная причина этого (хотя могу сказать, что Хьюго не любит, когда ваша тема отсутствует и может не создавать ожидаемый контент). Есть два хороших способа выяснить, почему наша сборка не создает index.html в вашей папке публикации (public, в вашем случае и конфигурации hugo по умолчанию):

  1. Вы можете загрузить копию любого успешного развертывания со страницы журналов развертывания, как показано на моем снимке экрана, и посмотреть, «что у нас в итоге получилось». Типичные проблемы здесь заключаются в том, что у нас ничего нет (ваша сборка не стала общедоступной / или вы закончили без index.html - поэтому мы правильно показываем 404 без пути)

  2. Вы можете следовать инструкциям по отладке, чтобы запустить наш образ сборки локально: https://github.com/netlify/build-image#testing-locally. После сборки вы все еще находитесь в оболочке сборки и можете посмотреть, что находится в вашем каталоге публикации.

screenshot indicating deploy download location

Спасибо @fool! Это исчерпывающий ответ. Но мне не удалось отладить его самостоятельно, начиная с нуля и шаг за шагом. Выложите мое решение здесь отдельно.

Taraas 08.06.2018 22:43

Моя ошибка заключалась в создании файла index.php вместо файла index.html. Я не знал, что netlify обслуживает только статический контент.

trinity420 17.04.2019 15:40

Похоже, я исправил. Я создал новое репо с образцом сайта и начал заменять части этого сайта своими частями, чтобы увидеть, когда он сломается.

Поэтому эту часть config.toml пришлось исключить, чтобы сайт снова развернулся в обычном режиме:

[permalinks]
    post = "/:year/:month/:day/:slug/" 

Я не уверен, почему - он всегда был там, и он работал, когда я создавал свой сайт локально, но не хотел работать, когда я добавил папку public в .gitignore и позволил hugo создать мой сайт.

Есть идеи, почему это так?

Рад, что ты это понял! Это похоже на Эта проблема. Думаю, объяснение - самый последний комментарий.

aosmith 08.06.2018 23:06

@aosmith Вы указали точную причину. Синтаксис TOML удивил многих. Я жаловался на это в сноске 23 в Разделе 2.2 книги blogdown: bookdown.org/yihui/blogdown/configuration.html

Yihui Xie 09.06.2018 02:38

Если вы используете Angular 8, вам необходимо указать значение каталога публикации, прочитав сборку angular.json outputPath, которая является dist/{project-name}, а если вы используете более старые версии, это должен быть dist, который является значением outDir, из которого вы можете читать. угловой-cli.json.

Столкнулся с этой проблемой. Мое решение заключалось в том, чтобы установить правильный путь сборки для объявления публиковать внутри файла netlify.toml. Новый процесс автоматического развертывания netlify использует этот файл для развертывания проектов из репозиториев.

Angular 8, а теперь и Angular 9 публикуются в dist / {имя проекта}, это имя папки для ввода, а не только dist, как в предыдущих выпусках. Если вы укажете только dist, он будет искать index.html в неправильном каталоге, и результатом будет «Страница не найдена».

назовите свой основной файл HTML как index.html вместо любого другого имени.

Если вы видите ошибку «Не найдено» при прямом переходе к определенному пути, например, https://yourdomain.com/something, это может быть полезно (ReactJS):

В папке public (папка, содержащая index.html) создайте файл с именем _redirects без расширения. Затем введите в него следующее:

/* /index.html 200

Теперь сохраните, зафиксируйте, отправьте и опубликуйте. :)

Причина "Not Found" в том, что при использовании маршрутизатора, например: React Router, он обрабатывает все маршруты, но когда вы напрямую переходите к конечной точке, netlify должен знать, куда вас перенаправить. Это то, что мы указываем в файле _redirects.

Л И Ф Е С А В Е Р!

cantaş 20.12.2020 22:12

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

Nanthakumar J J 02.02.2021 13:37

Это действительно сэкономило мне время, спасибо! Но есть еще одна проблема с перенаправлением Oauth.

Nanthakumar J J 02.02.2021 13:43

Для Angular я испытал это, и я обнаружил, что работает следующее:

touch src/_redirects

This file will contain the rule below. It indicates that all requests to the server should be redirected to index.html. We also add a HTTP status code option at the end to indicate that these redirects should return a 200 status. By default, a 301 status is returned.

/*  /index.html 200

The last thing we have to do is add the below option in our angular.json und er projects > {your_project_name} > architect > options > assets. Include it in the assets array:

{
  "glob": "_redirects",
  "input": "src",
  "output": "/"
}

От https://www.smashingmagazine.com/2020/10/angular-feedback-netlify-forms-edge/

Я убедился, что «каталог публикации» и папка сборки названы одинаково. Затем я внес изменения, которые @Adwaith предложил выше. Большое спасибо @Adwaith, ваш вклад был спасением.

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