Я запускаю статический сайт 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
Да. На самом деле так оно и было. Я только пытался изменить его на «/», чтобы посмотреть, делает ли он что-нибудь. Это не ...
И на всякий случай, когда вы обслуживаете сайт, ваш сайт выглядит хорошо на местном уровне? Я обнаружил несколько вещей, которые могут иметь отношение к делу, но находятся над моей головой; большая разница, которую я вижу на вашем веб-сайте, - это использование подмодулей, который затем может быть связан с netlify и перенаправление (также обсуждается здесь.
Да ладно, локально выглядит отлично! Вчера и сегодня я переключился на подмодули, пытаясь устранить неполадки (я подумал, что, возможно, подмодуль темы сделает это). Проблема началась до того, как я перешел на подмодули. Это началось, когда я попытался остановить создание сайта локально (еще один вопрос, который я разместил, и вы ответили) stackoverflow.com/questions/50750447/…
Ну блин, у меня нет идей. Весь поток «перенаправления» заставил меня подумать, что он может иметь какое-то отношение к index.html, но насколько я могу судить, я использую тот же самый для своего [веб-сайта академической тематики]) github.com/aosmith16/academic). Надеюсь, ты во всем разберешься!
Ха-ха, все равно спасибо! Я сделал то же, что и вы, и проверил репозитории на github у других людей (кто бы ни запустил их сайт по академической теме) - мог найти что-нибудь другое!
Два вопроса: 1) Вы действительно добавили свой домен в Netlify? netlify.com/docs/custom-domains/#assigning-a-custom-domain 2) Какой субдомен Netlify у вашего сайта?
@YihuiXie, да, давным-давно, когда я впервые развернул сайт (в то время создавал его локально, лучше я не знал). Все было в порядке. С тех пор я не менял эти настройки. Это из настроек Netlify. Поддомен по умолчанию - taraskaduk.netlify.com; Основной домен - taraskaduk.com
@YihuiXie, моя проблема может быть похожей на это: github.com/developit/preact-boilerplate/issues/101 Есть ли необходимость возиться с перенаправлениями, или это то, что blogdown обрабатывает в фоновом режиме?
Я не думаю, что ваша проблема связана с переадресацией, поскольку у вас нет static/_redirects. Я также не думаю, что это имеет отношение к blogdown, поскольку он отлично работает локально. У меня закончились идеи вроде @aosmith. Вы можете обратиться в службу поддержки Netlify и узнать, есть ли у них какие-либо идеи.
На самом деле вы можете изменить команду hugo на hugo -v на Netlify, что может дать больше информации.
@YihuiXie, он действительно раскрыл кучу информации! Я получаю кучу длинных сообщений WARN, все из которых начинаются с Unable to locate layout for .... Насколько я понимаю, есть проблема с темой или, скорее, с тем, как я ее настроил?
Позвольте нам продолжить обсуждение в чате.
@YihuiXie Мне нужно исправить проблему (см. Решение, опубликованное ниже). Но я не уверен, почему это не сработало и почему то, что я сделал, исправило ...





Отказ от ответственности: я работаю в группе поддержки @ Netlify
Всегда разрешено обращаться в службу поддержки Netlify по таким вопросам, хотя мы действительно можем помочь вам только отладить, что отличает наш процесс сборки от вашего локального, а не отладку исходного кода. Позвольте мне подробнее рассказать о некоторых передовых методах работы, о которых рассказали комментаторы, и дать несколько неочевидных предложений, которые помогут вам в дальнейшей отладке.
Во-первых, как было предложено (спасибо @aosmith!) BaseURL должен быть установлен на / - это лучшая практика, которая позволит вашему сайту работать локально (http: // localhost), но также и на Netlify - через http, https, развернуть превью и, наконец, на других хостинг-провайдеры, а прокси и т. д. Просто сделай это :)
Во-вторых, вы могли иметь перенаправления не только в файле _redirects, но и в netlify.toml, но я также не думаю, что это проблема.
Когда вы получаете 404 на свой основной URL, это означает, что у вас нет /index.html. Я не могу сказать, в чем состоит основная причина этого (хотя могу сказать, что Хьюго не любит, когда ваша тема отсутствует и может не создавать ожидаемый контент). Есть два хороших способа выяснить, почему наша сборка не создает index.html в вашей папке публикации (public, в вашем случае и конфигурации hugo по умолчанию):
Вы можете загрузить копию любого успешного развертывания со страницы журналов развертывания, как показано на моем снимке экрана, и посмотреть, «что у нас в итоге получилось». Типичные проблемы здесь заключаются в том, что у нас ничего нет (ваша сборка не стала общедоступной / или вы закончили без index.html - поэтому мы правильно показываем 404 без пути)
Вы можете следовать инструкциям по отладке, чтобы запустить наш образ сборки локально: https://github.com/netlify/build-image#testing-locally. После сборки вы все еще находитесь в оболочке сборки и можете посмотреть, что находится в вашем каталоге публикации.
Спасибо @fool! Это исчерпывающий ответ. Но мне не удалось отладить его самостоятельно, начиная с нуля и шаг за шагом. Выложите мое решение здесь отдельно.
Моя ошибка заключалась в создании файла index.php вместо файла index.html. Я не знал, что netlify обслуживает только статический контент.
Похоже, я исправил. Я создал новое репо с образцом сайта и начал заменять части этого сайта своими частями, чтобы увидеть, когда он сломается.
Поэтому эту часть config.toml пришлось исключить, чтобы сайт снова развернулся в обычном режиме:
[permalinks]
post = "/:year/:month/:day/:slug/"
Я не уверен, почему - он всегда был там, и он работал, когда я создавал свой сайт локально, но не хотел работать, когда я добавил папку public в .gitignore и позволил hugo создать мой сайт.
Есть идеи, почему это так?
Рад, что ты это понял! Это похоже на Эта проблема. Думаю, объяснение - самый последний комментарий.
@aosmith Вы указали точную причину. Синтаксис TOML удивил многих. Я жаловался на это в сноске 23 в Разделе 2.2 книги blogdown: bookdown.org/yihui/blogdown/configuration.html
Если вы используете 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.
Л И Ф Е С А В Е Р!
Мне нужна вроде как эта информация, но не могли бы вы предоставить образец снимка экрана?
Это действительно сэкономило мне время, спасибо! Но есть еще одна проблема с перенаправлением Oauth.
Для 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/
Вы пробовали установить свой baseurl в
config.tomlна адрес своего веб-сайта (заканчивающийся косой чертой)? Я не видел, чтобы это приводило к "Страница не найдена", но я видел, как люди говорили о это вызывает другие проблемы