Перезапись URL не работает - React SPA на веб-приложении Azure (узел) - PullRequest
0 голосов
/ 10 января 2020

Я запускаю сборку приложения create-реагировать на веб-приложение Azure (узел LTS). Приложение использует React Routes и отлично работает на экране указателя и до тех пор, пока вы перемещаетесь по маршрутным ссылкам через приложение. Однако, если вы обновите sh страницу или перейдете непосредственно к маршруту, отличному от root, вы получите 404. Мне кажется, что моя перезапись web.config (которую я пробовал во многих вариантах) не честь. Я уверен, что я просто упускаю что-то очевидное. Есть предложения?

index. js file

var express = require('express');
var server = express();
var options = {
    index: 'index.html'
};
server.use('/', express.static('/home/site/wwwroot', options));
server.listen(process.env.PORT);

web.config (редактировать с обновленной версией)

<?xml version="1.0" encoding="utf-8"?>
<configuration>
 <system.webServer>
 <webSocket enabled="false" />
 <handlers>
    <add name="iisnode" path="index.js" verb="*" modules="iisnode"/>
  </handlers>
 <rewrite>
  <rules>
    <rule name="React Routes">
      <match url=".*" />
      <conditions logicalGrouping="MatchAll">
        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="True"/>
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="True"/>
        <add input="{REQUEST_URI}" pattern="/api" negate="true" />
      </conditions>
      <action type="Rewrite" url="/index.html" />
    </rule>
  </rules>
 </rewrite>
 <security>
    <requestFiltering>
      <hiddenSegments>
        <remove segment="bin"/>
      </hiddenSegments>
    </requestFiltering>
  </security>
  <httpErrors existingResponse="PassThrough" />
 </system.webServer>
</configuration>

Структура файла (/ site / wwwroot/)

  • index. html
  • web.config
  • static / (css, js)
...