React Routerни PHP хостингида ишлатish
Сиз билганингиздек, лойихани
тўплаш build қилганингиздан сўнг
React лойихаси оддий статикага
айланади, уни исталган хостингга
юклаб, ўша ерда дароқ ишлатса
бўлади.
Аммо, React Router билан муаммо бор. Гапи шундаки, Router ишлаш жараёнида браузердаги саҳифа URL манзилларини ўзгартиради. Бу пайтда саҳифа ҳақиқатан ҳам қайта юкланмайди, фақат JavaScript воситалари билан URL ўзгаради.
Хостингга чиқарилган веб-сайтда
Router ишлаяпти. Лекин, асосий саҳифадан
бошқа бирон саҳифада туриб, уни
қайта юклангиз, 404
хатоси пайдо бўлади.
Ва бу мантиқан тўғри, чунки браузер
берилган URL буйича файлни излайди,
худди статик веб-сайтлар ишлаганидек.
Аммо бизнинг иловамизда бундай саҳифа
бўлмайди, чунки биз фақатгина уларни
такрорлаймиз, аслда бизнинг барча
илова index.html саҳифасида ишлайди.
Муаммони ҳал қилиш учун, ҳақиқий
mavjud бўлган файлларга бориб қолмайдиган
барча URL манзиллари index.html
саҳифасига йўналтирилиши керак.
Бу хостингда ишлаётган веб-сервер
воситаларида амалга оширилади.
Виртуал хостинглар PHP да ишлайди.
Одатда сервер сифатида Apache ишлатилади.
Унда махсус .htaccess файли
mavjud бўлиб, у ёрдамида
қайта йўналтиришни белгилаб бериш мумкин.
Буни амалга ошириш учун сиз веб-сайтингизнинг
илдизи rootга қуйидаги мазмун
билан .htaccess файлини жойлаштиришингиз керак:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.html [QSA,L]
React Router билан лойиха яратинг.
Уни хостингга юкланг. Роутинг сустда ишламаслигига амин бўлинг.
.htaccess файли ёрдамида
муаммони ҳал қилинг.