如何在IIS上部署React Route 4

时间:2018-07-03 07:56:40

标签: reactjs iis react-router-v4

我有一个带有以下文件和文件夹的React应用程序:

├── static
│   ├── css
│   │   └── someCssFile.css
│   ├── js 
│   │   └── someJsFile.js
├── index.html
├── web.config

web.config文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <!-- This part is responsible for URL rewrites -->
        <rewrite>
         <rules>
             <rule name="DynamicContent">
                <conditions>
                    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="True"/>
                </conditions>
                <action type="Rewrite" url="index.html"/>
            </rule>
        </rules>
       </rewrite>
  </system.webServer>
</configuration>

而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>React App</title>
    <link href="/static/css/main.8833e8af.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.8f22fc15.js"></script>
</body>

</html>

我还安装了URL Rewrite。但是在ISS上部署应用程序时,它不起作用!

您能帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

您的操作网址必须是完全限定的网址。例如

<action type="Redirect" url="https://{HTTP_HOST}/index.html"/>

{HTTP_HOST}被IIS替换为请求中的实际主机名。如果您有多个指向同一站点的域/重定向,则可能需要对您的实际域进行硬编码。