Я пытаюсь развернуть свое реагирующее приложение на лазурных веб-сайтах. Я успешно сделал это. Поскольку это одностраничное приложение, оно не работает при перезагрузке. Во время перезагрузки отображается код ошибки 404.
Я хочу перенаправить страницу на / (index.html или root) при возникновении ошибки 404. Я могу сделать это, отредактировав файл web.config. Но я не могу найти конкретную политику перенаправления, которая мне нужна. Например:
Мне нужно перенаправить:
http://letsmeetupp.azurewebsites.net/event/eventId=dsdsd-dsdsd-1475750226814
это к
http://letsmeetupp.azurewebsites.net/#!/event/eventId=dsdsd-dsdsd-1475750226814
Я хочу перенаправить с префиксом #!/, чтобы я мог найти этот путь в своем приложении для реагирования и нажимать состояния в html 5.
Мой текущий файл web.config таков. Это перенаправляет меня на /, но мне нужен весь путь с префиксом, который помогает мне анализировать хэш и состояния отправки (HTML 5 HISTORY API).
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.web>
<compilation debug="false" targetFramework="4.0" />
<customErrors mode="On">
<error statusCode="404" redirect="index.aspx?sec=404" />
</customErrors>
</system.web>
<system.webServer>
<defaultDocument>
<files>
<clear />
<add value="default.aspx" />
<add value="Default.htm" />
<add value="Default.asp" />
<add value="index.htm" />
<add value="index.html" />
<add value="iisstart.htm" />
</files>
</defaultDocument>
<httpErrors errorMode="Custom" existingResponse="PassThrough">
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath="#!/" path="/" responseMode="Redirect" />
</httpErrors>
</system.webServer>
</configuration>
Редактировать после комментариев jambor:
Привет, @Jambor-MSFT. У меня есть reactJS (одностраничное приложение), развернутое на лазурных веб-сайтах. Дело в том, что мой SPA - это MVC. Там я определил свои маршруты. Технически я использую react-router для определения маршрутов в своем приложении SPA. Итак, на ваш вопрос Это нормально работает на вашем локальном компьютере?. Да, в самом деле. Я понимаю, что IIS не может понять маршруты. Я имею в виду, что он отображает index.html, когда http://letsmeetupp.azurewebsites.net попадает в браузер. И все маршруты внутренне управляются реагирующим файлом, включенным в index.html. То, что я хочу, находится на разных маршрутах, отличных от /, он должен перенаправлять на index.html с префиксом. например, http://letsmeetupp.azurewebsites.net/#!/event/eventId=dsdsd. После этого я могу внутренне обрабатывать маршруты, удаляя префикс и отображая правильный путь.