У меня проблема в том, что я не могу подать приложение реакции в подкаталог с использованием HashRouter. Я уже попробовал решения, предложенные в этом и этом вопросах, но он не работает, как ожидалось.
У меня есть следующая архитектура:
- Traefik в качестве обратного прокси
foo-service:
image: foo
labels:
- "traefik.enable=true"
- "traefik.http.routers.foo.rule=Host(`foo.localhost`) && PathPrefix(`/bar`)"
# The line below is done in order to nginx to serve the files on the root
- "traefik.http.middlewares.pathStrip.stripprefix.prefixes=/bar"
- "traefik.http.routers.foo.middlewares=pathStrip@docker"
nginx, обслуживающий React Приложение (которое использует HashRouter)
Проблема здесь в том, что на package.json
, когда я использую "homepage": "."
и я ввожу foo.localhost/bar
, я получаю много 404 ошибок, потому что ссылки на ресурсы, такие как js / css расположены на ./static/css/...css
вместо bar/static/css/...css
.
Когда я ставлю "homepage": "/bar"
ресурсы загружаются правильно, но URL становится foo.localhost/bar#/login
, что кажется неправильным.
И, наконец, когда я устанавливаю "homepage": "/bar"
и <HashRouter basename={'/bar'}>
, ресурсы также загружаются правильно, но тогда URL становится foo.localhost/bar#/bar/login
, что является катастрофой.
Я знаю, что мое второе решение " очевидно «самое близкое к правильному решению, но мне, честно говоря, не нравится это, потому что установка пути на package.json
кажется мне плохой. Вместо этого я хотел бы только изменить конфигурацию обратного прокси-сервера и позволить приложению быть «agnosti c».
Заранее спасибо.