Как включить маршрутизацию React в IIS? - PullRequest
0 голосов
/ 15 октября 2018

Следующий компонент загружен из App.js моего приложения React.

const Main = () => (
  <BrowserRouter>
    <Switch>
      <Route exact path="/:userid" component={Banks} />
    </Switch>
  </BrowserRouter>
);

Когда приложение запускается с использованием локального сервера разработки, я могу получить идентификатор пользователя по следующему URL:

http://myAppPath/100

Однако, когда я создаю приложение и размещаю его в IIS, я не могу получить идентификатор пользователя.

https://localhost/Bank/100 -> ОБНОВЛЕНО HTTP К HTTPS

Маршрутизация не распознана.Я использовал URL Rewrite, но значение userid до сих пор не пришло.

<system.webServer>
    <rewrite>
        <rules>
            <rule name="Routing" enabled="true" stopProcessing="true">
                <match url=".*" />
                <conditions>
                    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                </conditions>
                <action type="Rewrite" url="/" logRewrittenUrl="true" />
            </rule>
        </rules>
    </rewrite>
</system.webServer>

index.html:

<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name="theme-color" content="#000000"><link rel="manifest" href="./manifest.json"><link rel="shortcut icon" href="./favicon.ico"><title>Bank App</title><link href="./static/css/main.b730bb13.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><script type="text/javascript" src="./static/js/main.2564873f.js"></script></body></html>

1 Ответ

0 голосов
/ 15 октября 2018

сначала установите iis url rewrite на ваш сервер с здесь .только тогда он учитывает вашу конфигурацию перезаписи URL

ОБНОВЛЕНИЕ

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Static Assets" stopProcessing="true">
          <match url="([\S]+[.](html|htm|svg|js|css|png|gif|jpg|jpeg))" />
          <action type="Rewrite" url="/{R:1}"/>
        </rule>
        <rule name="ReactRouter Routes" stopProcessing="true">
          <match url=".*" />
          <conditions logicalGrouping="MatchAll">
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
          </conditions>
          <action type="Rewrite" url="/index.html" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>
...