#html #reactjs
Вопрос:
Мое приложение React отлично работает локально, но когда я его развертываю, маршрутизация работает не так, как должна. Когда я нажимаю на кнопки панели навигации, все работает отлично, но когда я пытаюсь обновить или написать маршруты вручную, я получаю сообщение «запрошенный URL-адрес не найден на этом сервере». В нем также говорится: «Кроме того, при попытке использовать документ ErrorDocument для обработки запроса была обнаружена ошибка 404»., даже если у меня есть файл .htaccess.
вот мой код :
-вот одна из кнопок на панели навигации :
<Link to="/contact">
<button>
<FadeIn delay={200}>CONTACT</FadeIn>
</button>
</Link>
-вот файл App.tsx, который включает в себя маршрутизацию :
import {BrowserRouter as Router, Route, Switch} from "react-router-dom";
function App() {
return (
<Router>
<Header />
<Switch>
<Route exact path = "/" component={Carusel}/>
<Route exact path = "/contact" component={Contact}/>
</Switch>
<Footer />
</Router>
);
}
Ответ №1:
Пожалуйста, обновите свой файл .htaccess следующим кодом и попробуйте.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule . /index.html [L]
</IfModule>
Ответ №2:
Похоже , что ваш сервер не обрабатывает никаких маршрутов, за исключением "/"
, что нормально, когда вы маршрутизируете на стороне клиента, но выполнение запроса к GET "/contact"
завершится неудачей.
Например, приложение React при загрузке в качестве корзины AWS S3 в конфигурации веб-сайта потребует, чтобы вы установили документ об ошибке. Вы можете установить этот документ об ошибке в качестве своего index.html, таким образом, 404 будет обрабатываться вашим внешним приложением, которое знает, как обрабатывать маршрут.
Вот пример, в котором для документа об ошибке установлено значение index.html https://andela.com/insights/how-to-deploy-your-react-app-to-aws-s3/