React Router выдает ошибку 404 при производстве

React Router работает на локальном компьютере, Chrome, но не в Safari и других браузерах,

 <Switch>
    <Route exact path = {"/"} component = {Home} />
    <Route path = "/programs/:slug" component = {Programs} />
    <Route path = "/page/:slug" component = {Page} />
    <Route component = {NotFound} />
</Switch>

это мой код, но он отлично работает в режиме разработки без ошибок, но на производстве сафари выдает ошибку 404, когда я перехожу к программам /: slug или page /: slug

Вы переписали URL на продакшене. Все URL-адреса должны быть нацелены на index.html.

Kishan Mundha 09.06.2018 06:27

Это что? Я поместил это в свой package.json перед сборкой "домашней страницы": "example.co"

Schnecke 09.06.2018 06:29

Кстати, я использую виртуальный хостинг

Schnecke 09.06.2018 06:29

В процессе производства ваше приложение работает в горячем режиме на nodejs, которые размещаются как одностраничное приложение. На производстве вам нужно установить некоторую конфигурацию, которая зависит от сервера. как и в apache, вы можете настроить в .htaaccess или в nginx вы можете перезаписать.

Kishan Mundha 09.06.2018 06:31

Я не знаком с botmap.io. Я поставил ответ. Пожалуйста, отметьте как завершенный, если вы нашли ответ.

Kishan Mundha 09.06.2018 06:43
Поведение ключевого слова "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) для оценки ваших знаний,...
3
5
2 286
3

Ответы 3

Возможно, вам потребуется настроить одну точку входа index.html на сервере. Все URL-адреса должны быть нацелены на index.html, и точка входа будет решать, как отображать и контент на основе маршрута.

Я добавил это в .htaccess

RewriteBase /
RewriteCond %{REQUEST_URI} !^/(assets/?|$)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]

Благодаря объяснению Кишана Мундхи

Если вы используете pm2 serve, вы можете просто добавить флаг --spa.

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