Ich versuche, einen Basisnamen mit react-router zu verwenden, wie dokumentiert auf den React-Router-Dokumenten . Dies ist darauf zurückzuführen, dass base href veraltet ist.
Hier ist was ich jetzt habe:
Wenn ich zu http://the-url.com/subdirectory
gehe, wird die Seite wie erwartet geladen (Rendering der App
-Komponente). Wenn ich jedoch zu http://the-url.com/subdirectory/next
gehe, erhalte ich einen 404-Fehler. Meine nginx-Konfig ist:
Ich habe es gelöst mit:
%Vor% Ich denke, das Problem waren verschiedene Versionen des Pakets history
. [email protected]
verwendet [email protected]
, während history
bereits bei 4.5.1
ist.
Stellen Sie also sicher, dass Sie die richtige Version des history
-Pakets installiert haben.
Setzen Sie den Router-Basisnamen wie folgt auf Ihr Unterverzeichnis
<Router basename="/subdirectory">
Wenn Sie create-react-app verwenden und mit npm run build erstellen, müssen Sie die Startseite in package.json setzen, damit die Pfade im Produktions-Build korrekt sind.
homepage: "{http://www.the-url.com/subdirectory}"
Nehmen wir für die Nginx-Konfiguration an, dass Ihre index.html unter /path/to/subdirectory/index.html
liegt. Dann sollte folgendes funktionieren:
Tags und Links react-router