"Страница не найдена" при попытке получить доступ к сайту, развернутому в 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

19 ответов

Решение

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

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

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

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

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

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

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

/* /index.html 200

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

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

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

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

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

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

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

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

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

снимок экрана с указанием места загрузки

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

/* /index.html 200

Зафиксируйте и отправьте на свой githubReact Router, он обрабатывает все маршруты, но когда вы посещаете конечную точку, netlify должен знать, куда вас перенаправить. Это то, что мы указываем в_redirectsфайл.

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

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

Я создал файл с именем netlify.toml на том же уровне, что и package.json или корневую папку с этим внутри и работает!

///netlify.toml

      [build]
  command = "CI='' npm run build"
  publish = "/build"
  base ="/"

[[redirects]]
  from = "/*"
  to = "/index.html"
  status = 200

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

создайте index.html в корневом каталоге и укажите файл индекса в общей папке, используя следующий код

      <meta http-equiv="Refresh" content="2; url=public/index.html" />

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

У меня была точно такая же проблема, когда я развернул свое приложение для реагирования на netlify, оно было исправлено, когда я сделал следующее:

  1. в корне вашего проекта создайте файл и назовите егоnetlify.toml
  2. вставьте в него этот фрагмент кода и сохраните его (убедитесь, что отступ такой же!!
      [build]
  command = "npm run build"
  publish = "/build"
  base ="/"

[[redirects]]
  from = "/*"
  to = "/index.html"
  status = 200

отправьте это изменение на свой github/bitbucket или туда, где вы размещаете свой код.

-если вы уже подключаете Netlify к репозиторию вашего проекта, начнется процесс автоматического развертывания, и вы можете увидеть его на странице вашего проекта Netlify.

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

Чтобы решить проблему ошибок Netlify «страница не найдена» при обновлении страницы, одним из решений является создание файла с именем «_redirects» в общей папке и запись «/* /index.html 200» в этом файле. Это заставит Netlify перенаправлять любые запросы, которые он не распознает, в ваш индекс.

html, который должен предотвратить ошибку «страница не найдена» при обновлении страницы.

В моем случае у меня было (приложение vue3) для загрузки всего каталога сборки (dist/), а не только файлов. Это сработало для меня

Внутри корневой папки (того же уровня, что и вы)package.jsonфайл), создайте новый файл с именемnetlify.toml, следующего содержания:

      [[redirects]]
from = "/*"
to = "/index.html"
status = 200

Затем отправьте изменения, чтобы выполнить новое развертывание.

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

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

Если это ваш сайт и вы не ожидали появления ошибки 404 по этому пути, посетите руководство службы поддержки Netlify «Страница не найдена», чтобы получить советы по устранению неполадок».


  1. Во-первых, основной причиной проблемы является файл с неправильным именем. Пример: упражнение1.html не распознается в netlify.

  2. Он должен называться index.html.

почему потому что? веб-сервер можно настроить на распознавание любого файла, который вы хотите использовать по умолчанию для этого сайта. В этом случае все же рекомендуется придерживаться index. html или индекс. htm, поскольку он сразу распознается на большинстве серверов без какой-либо дополнительной настройки.

      title: 'Tezster Dart',
  tagline: 'A flutter package which provides the functionalities to play around with tezos dApps',
  url: 'https://site-name.netlify.app',
  baseUrl: '/',
  onBrokenLinks: 'throw',
  onBrokenMarkdownLinks: 'warn',
  favicon: 'img/favicon.ico',
  organizationName: 'Tezsure', // Usually your GitHub org/user name.
  projectName: 'Tezster_dart', // Usually your repo name.

Если вы не обновили URL-адрес в docs/docusaurus.config.js, это может быть проблемой.

Единственные две причины, которые я мог придумать, это потому, что:

  1. .html файл не называется index , ваш HTML-файл всегда должен быть index.html, по крайней мере, только главная/домашняя страница (если ваш проект состоит из нескольких веб-страниц).

  2. Убедитесь, что у вас нет каждого отдельного файла в отдельном каталоге, я видел, как это случалось раньше, это вызывает проблемы.

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

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