React Router på PHP-hosting
Som du allerede vet, etter bygging er et React-prosjekt vanlig statisk innhold, som kan lastes opp til enhver hosting, og det vil umiddelbart fungere der.
Det er imidlertid et problem med React Router. Saken er at Router under arbeid endrer URL-en til sider i nettleseren. Samtidig lastes siden ikke virkelig på nytt, det er bare URL-en som endres ved hjelp av JavaScript.
På et nettsted lastet opp til hosting,
vil Router fungere. Men hvis du, mens du er
på en side på nettstedet, bortsett fra hovedsiden,
laster den på nytt, vil du få en 404
-feil.
Og dette er logisk, fordi nettleseren vil
lete etter en fil på den angitte URL-en,
slik statiske nettsteder vanligvis fungerer.
Og i applikasjonen vår vil ikke en slik side
finnes, fordi vi bare simulerer
dem, og faktisk kjører hele
applikasjonen vår på index.html.
For å løse problemet må du gjøre slik
at alle URL-er som ikke peker til virkelig
eksisterende filer, omdirigeres
til index.html. Dette gjøres
ved hjelp av web-serveren som kjører
på hostingen.
Virtuelle hostingtjenester kjører på PHP.
Som regel brukes Apache som server.
Den har en spesiell fil .htaccess tilgjengelig,
som kan brukes til å sette opp
omdirigering.
For å gjøre dette må du i roten av nettstedet ditt
plassere en fil .htaccess
med følgende innhold:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.html [QSA,L]
Lag et prosjekt med React Router.
Last det opp til hosting. Forsikre deg om at routing ikke fungerer som standard.
Løs problemet ved hjelp av
filen .htaccess.