När du hostar en React-app med React Router på en IIS-server (Internet Information Services) kan du stöta på problem med routning. Detta beror på att IIS hanterar rutter annorlunda än en typisk server för single-page applications (SPA). Den här guiden hjälper dig att konfigurera IIS korrekt så att klientsidans routning fungerar som förväntat.
Så här gör du
-
Steg 1: Konfigurera IIS Rewrite Rules
IIS måste konfigureras för att korrekt hantera routning på klientsidan. Lägg till omskrivningsregler i din
web.config-fil i rotkatalogen för din React-app:<configuration> <system.webServer> <rewrite> <rules> <rule name="React Router Routes" stopProcessing="true"> <match url=".*" /> <conditions logicalGrouping="MatchAll"> <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> </conditions> <action type="Rewrite" url="/" /> </rule> </rules> </rewrite> </system.webServer> </configuration>Denna regel omdirigerar alla förfrågningar som inte matchar en fysisk fil eller katalog till
index.html. -
Steg 2: Ange basename-prop i React Router
I din React Router-konfiguration, använd
basename-propen för att specificera bas-URL:en för alla platser. Detta bör matcha underkatalogen eller den virtuella katalogen där din app är värd på IIS-servern:<BrowserRouter basename="/your-subdirectory"> {/* Rutter */} </BrowserRouter>Ersätt
/your-subdirectorymed den faktiska sökvägen till underkatalogen där din app är värd på servern. -
Steg 3: Säkerställ korrekt byggkonfiguration
När du bygger din React-app, konfigurera rätt hem-URL i din
package.json-fil. Detta bör också matcha underkatalogen eller den virtuella katalogen där din app kommer att vara värd på IIS-servern:"homepage": "/your-subdirectory"Ersätt
/your-subdirectorymed den faktiska sökvägen till underkatalogen. -
Steg 4: Testa lokalt
Innan du distribuerar till IIS-servern, testa din React-app lokalt för att säkerställa att routningen fungerar som förväntat. Du kan använda verktyg som
serveellerhttp-serverför att servera din byggda React-app lokalt och testa routning. -
Steg 5: Distribuera och felsöka
Distribuera din React-app till IIS-servern och testa routning. Om du stöter på problem, använd webbläsarens utvecklarverktyg för att inspektera nätverksförfrågningar och konsolfel för eventuella ledtrådar om vad som kan gå fel.