При работе на локальном хосте предполагается, что приложение находится в корневом каталоге локального сервера dev
localhost: 50001 / index.html
Но при развертывании вна удаленном сервере IIS, там работают другие веб-приложения, и каждое отдельное приложение должно быть создано как «Приложение» (терминология IIS)
Так, например, «Веб-сайт по умолчанию» находится на порту 80;другие приложения (также на порту 80) имеют свое собственное имя приложения.
MYSERVERNAME / App1 /
MYSERVERNAME / App2 /
MYSERVERNAME / MyReactApp /
Итактеперь, чтобы добраться до моего приложения React, у меня есть дополнительный путь http://MYSERVERNAME/MyReactApp/index.html
index.html, созданный 'npm run build', содержит абсолютные пути;Чтобы мое развертывание работало, я вручную отредактировал index.html, чтобы он содержал относительные пути
Так, например, вместо:
<script type="text/javascript" src="/static/js/main.d17bed58.js"></script>
я добавил. (Точку) перед всемипути для получения:
<script type="text/javascript" src="./static/js/main.d17bed58.js"></script>
Это работает в основном, и все скрипты загружаются изначально.НО я не доволен результатом, потому что любые ссылки и маршруты на стороне клиента (то есть от реакции-маршрутизатора), которые я нажимаю в приложении, вернутся, предполагая, что приложение размещено в корне веб-сервера.т.е.
http://MYSERVERNAME/
http://MYSERVERNAME/Home
http://MYSERVERNAME/MyWorkOrder/
http://MYSERVERNAME/MyWorkOrder/123456
Более того, если я наберу любую из ссылок прямо в браузере (или обновлю страницу), она, очевидно, потерпит неудачу.
Напомним.вопрос в том, что мне нужно всегда поддерживать «истинный» путь http://MYSERVERNAME/myReactApp при развертывании в IIS.Как это сделать?