АКЦИЯ: бесплатные месячные курсы по созданию сайтов
на выбор: верстка, JavaScript, PHP или фреймворки. Сегодня последний день для записи! Жми!
10 of 10 menu
Долгожданный Бесплатный курс по выкладке сайта на хостинг. МЫ УЖЕ НАЧАЛИ! Присоединяйтесь к нам!

React Router на PHP хостинге

Как вы уже знаете, после сборки проект React представляет собой обычную статику, которую можно загрузить на любой хостинг, и она там сразу будет работать.

Есть, однако, проблема с React Router. Дело в том, что Router при работе меняет URL страниц в браузере. При этом реально страница не перезагружается, а только меняется URL средствами JavaScript.

В сайте, выложенном на хостинг, Router будет работать. Но, если находясь на какой-то странице сайта, кроме главной, перезагрузить ее, то вывалится 404 ошибка.

И это логично, ведь браузер будет искать файл по заданному URL, как обычно работают статичные сайты. А в нашем приложении такой страницы не будет, так как мы только имитируем их, а на самом деле все наше приложение работает на index.html.

Для решения проблемы нужно сделать так, чтобы все URL, не ведущие на реально существующие файлы, перенаправлялись на index.html. Это делается средствами web-сервера, работающего на хостинге.

Виртуальные хостинги работают на PHP. Как правило в качестве сервера используется Apache. В нем доступен специальный файл .htaccess, с помощью которого можно задать перенаправление.

Для этого вам в корне вашего сайта нужно разместить файл .htaccess со следующим содержимым:

RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.html [QSA,L]

Сделайте проект с React Router.

Залейте его на хостинг. Убедитесь, что по умолчанию роутинг не работает.

Исправьте проблему с помощью файла .htaccess.