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

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

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

Страница не найдена

Похоже, вы перешли по неработающей ссылке или ввели URL, которого нет на этом сайте.

← Вернуться на наш сайт

В чем может быть причина?


Мой репозиторий на 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_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

person Taraas    schedule 08.06.2018    source источник
comment
Вы пробовали установить свой baseurl в config.toml на адрес вашего веб-сайта (заканчивающийся косой чертой)? Я не видел, чтобы это приводило к Page Not Found, но я видел, как люди говорили о том, что вызывает другие проблемы.   -  person aosmith    schedule 08.06.2018
comment
Да. На самом деле так оно и было. Я только пытался изменить его на /, чтобы посмотреть, делает ли он что-нибудь. Это не ...   -  person Taraas    schedule 08.06.2018
comment
И на всякий случай, когда вы обслуживаете сайт, ваш сайт выглядит хорошо на местном уровне? Я обнаружил несколько вещей, которые могут иметь отношение к делу, но находятся над моей головой; большая разница, которую я вижу на вашем веб-сайте, - это использование подмодулей, которые затем могут быть связаны с netlify и перенаправлением (также обсуждается здесь.   -  person aosmith    schedule 08.06.2018
comment
Да ладно, локально выглядит отлично! Вчера и сегодня я переключился на подмодули, пытаясь устранить неполадки (я подумал, что, возможно, подмодуль темы сделает это). Проблема началась до того, как я перешел на подмодули. Это началось, когда я попытался остановить создание сайта локально (еще один вопрос, который я опубликовал, и вы ответили) stackoverflow.com/questions/50750447/   -  person Taraas    schedule 08.06.2018
comment
Ну блин, у меня нет идей. Весь поток перенаправления заставил меня подумать, что он может иметь какое-то отношение к index.html, но насколько я могу судить, я использую тот же для своего [веб-сайта академической тематики]) github.com/aosmith16/academic). Надеюсь, вы во всем разберетесь!   -  person aosmith    schedule 08.06.2018
comment
Ха-ха, все равно спасибо! Я сделал то же, что и вы, и проверил репозитории на github у других людей (кто бы ни запустил их сайт по академической теме) - мог найти что-нибудь другое!   -  person Taraas    schedule 08.06.2018
comment
Два вопроса: 1) Вы действительно добавили свой домен в Netlify? netlify.com/docs/custom-domains/#assigning- a-custom-domain 2) Какой субдомен Netlify у вашего сайта?   -  person Yihui Xie    schedule 08.06.2018
comment
@YihuiXie, да, давным-давно, когда я впервые развернул сайт (в то время создавал его локально, лучше я не знал). Все было в порядке. С тех пор я не менял эти настройки. Это из настроек Netlify. Поддомен по умолчанию - taraskaduk.netlify.com; Основной домен - taraskaduk.com   -  person Taraas    schedule 08.06.2018
comment
@YihuiXie, моя проблема может быть похожей на эту: github.com/developit/preact-boilerplate/ issues / 101 Есть ли необходимость возиться с переадресацией или это то, что blogdown обрабатывает в фоновом режиме?   -  person Taraas    schedule 08.06.2018
comment
Я не думаю, что ваша проблема связана с переадресацией, поскольку у вас нет static/_redirects. Я также не думаю, что это имеет отношение к blogdown, поскольку он отлично работает локально. У меня закончились идеи вроде @aosmith. Вы можете обратиться в службу поддержки Netlify и узнать, есть ли у них какие-либо идеи.   -  person Yihui Xie    schedule 08.06.2018
comment
На самом деле вы можете изменить команду hugo на hugo -v на Netlify, что может раскрыть больше информации.   -  person Yihui Xie    schedule 08.06.2018
comment
@YihuiXie, он действительно раскрыл кучу информации! Я получаю кучу длинных сообщений WARN, все из которых начинаются с Unable to locate layout for .... Насколько я понимаю, есть проблема с темой или, скорее, с тем, как я ее настроил?   -  person Taraas    schedule 08.06.2018
comment
Позвольте нам продолжить это обсуждение в чате.   -  person Taraas    schedule 08.06.2018
comment
@YihuiXie Мне нужно исправить проблему (см. Решение, опубликованное ниже). Но я не уверен, почему это не сработало и почему то, что я сделал, исправило ...   -  person Taraas    schedule 08.06.2018
comment
blog.almightytricks.com/2020/10/14/ Хорошая статья об устранении ошибки 404   -  person Sangram Badi    schedule 19.10.2020


Ответы (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. После сборки вы все еще находитесь в оболочке сборки и можете посмотреть, что находится в вашем каталоге публикации.

снимок экрана с указанием места загрузки для развертывания

person fool    schedule 08.06.2018
comment
Спасибо @fool! Это исчерпывающий ответ. Но мне не удалось отладить его самостоятельно, начиная с нуля и продвигаясь шаг за шагом. Выложите мое решение здесь отдельно. - person Taraas; 08.06.2018
comment
Моя ошибка заключалась в создании файла index.php вместо файла index.html. Я не знал, что netlify обслуживает только статический контент. - person trinity420; 17.04.2019

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

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

/* /index.html 200

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

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

person Adwaith    schedule 04.09.2020
comment
Мне нужна вроде как эта информация, но не могли бы вы предоставить образец снимка экрана? - person Nanthakumar J J; 02.02.2021
comment
Это действительно сэкономило мне время, спасибо! Но есть еще одна проблема с перенаправлением Oauth. - person Nanthakumar J J; 02.02.2021

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

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

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

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

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

person Taraas    schedule 08.06.2018
comment
Рад, что ты это понял! Это похоже на эту проблему. Думаю, объяснение - самый последний комментарий. - person aosmith; 09.06.2018
comment
@aosmith Вы указали точную причину. Синтаксис TOML удивил многих. Я жаловался на это в сноске 23 в разделе 2.2 книги blogdown: bookdown.org/yihui /blogdown/configuration.html - person Yihui Xie; 09.06.2018

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

person Dejazmach    schedule 18.10.2019

Для 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/

person Michael Stokes    schedule 15.11.2020

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

person Nicola    schedule 22.02.2020

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

person bir_ham    schedule 30.10.2019

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

person Shubham Sharma    schedule 28.06.2020

введите описание изображения здесь

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

person Thatguycodes    schedule 26.01.2021