Маршрутизатор реагирования не работает для вложенных путей в S3

У меня настроен реакции-маршрутизатора, как показано ниже:

<Router>
    <Routes>
        <Route path = "/" element = {<Home />} />
        <Route path = "/post/:slug" element = {<Post />} />
        // other routes
    </Routes>
</Router>

Мой интерфейс размещен в корзине S3 и обслуживается через дистрибутив CloudFront. Все мои маршруты работают, кроме маршрута «/post/:slug». Это странно, потому что если я перехожу к сообщению с помощью хука useNavigate, он работает и загружает сообщение с правильным пулом. Однако, если я перезагружаюсь на странице сообщения или ввожу URL-адрес сообщения непосредственно в браузере (например, https://BASE_URL/post/slug/), он просто показывает пустую страницу и, похоже, не может определить маршрут. . Я в растерянности, потому что почтовый маршрут работает, если я запускаю свой интерфейс локально. Это просто не работает при развертывании с помощью S3 и CloudFront.

Для хоста CloudFront я пересылаю все пути «*» в свою корзину S3. Я также добавил страницу ошибок для пересылки в корневой объект /index.html.

Вам необходимо настроить хост так, чтобы он возвращал корневой файл index.html для всех запросов страниц в ваше приложение. См. документацию по развертыванию CRA для S3: create-react-app.dev/docs/deployment/#s3-and-cloudfront Чтобы внести ясность, это не то, что вы можете исправить из внешнего интерфейса. Можете ли вы отредактировать, чтобы поделиться тем, как вы настроили свой хост/сервис?

Drew Reese 12.04.2024 07:46

Спасибо за ваш ответ. Я использую Vite, а не CRA.

John Doe 12.04.2024 07:52

Vite/CRA не имеют значения, именно так вы создаете свой артефакт... важна информация о развертывании/хостине, и для этого документация CRA по-прежнему актуальна. 😉

Drew Reese 12.04.2024 07:53

Спасибо, посмотрю документацию. Я добавил некоторые подробности в свой пост. Надеюсь, поможет!

John Doe 12.04.2024 08:03

Почему это будет работать локально, а не на AWS?

Allen Ye 12.04.2024 08:10
Поведение ключевого слова "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
5
177
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Я считаю, что путь должен быть «pathname/:id», а не «/pathname/:id».

Лол, чем это должно помочь

Allen Ye 14.04.2024 01:29

Спасибо за предложение, но оно не сработало.

John Doe 14.04.2024 02:03
Ответ принят как подходящий

Нашел исправление! Мне не хватало <base href = "/" /> в моем файле index.html.

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