如何在IIS Web服务器上托管React应用程序?

5

我该如何在IIS Web服务器上托管Reactjs应用程序?

我使用npm run build命令,并替换了服务器上的文件,然后创建了一个新站点来引用这些文件。

同时,我使用*号将所有IP绑定到80端口,但未能成功。

1个回答

15
运行以下命令后,输出将在项目内创建一个名为“build”的新文件夹,其中包含生产构建。我们可以通过将这些文件复制到IIS网站的根目录来托管项目,匿名帐户应能够正确访问网站根文件夹,因此如果它不是默认网站,则应授予IUSR帐户对该文件夹的完全访问权限。 输入图像描述
输入图像描述
在IIS绑定模块中添加网站绑定后, 输入图像描述
我们可以使用以下地址正确访问网站。
http://localhost

此外,如果我们在React应用程序中添加某些路由功能(多个组件),则必须安装IIS URL Rewrite扩展。
https://www.iis.net/downloads/microsoft/url-rewrite
安装成功后,我们需要在IIS网站的根目录下创建一个包含以下内容的web.config文件。
<?xml version="1.0"?>
<configuration>
 <system.webServer>
 <rewrite>
 <rules>
 <rule name="React Routes" stopProcessing="true">
 <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="/" />
 </rule>
 </rules>
 </rewrite>
 </system.webServer>
</configuration>

如果问题仍存在,请随时告诉我。


1
这是否可以在没有URL Rewrite扩展的情况下实现? - user2966445
我曾经遇到过同样的问题,但在你的帮助下,问题得以解决。谢谢你。我有一个子域名的问题。我把文件放在名为“home”的文件夹中,而web.config在外面,使用了<match url="/home/.*" />,但它没有起作用。 - Ramy Mohamed

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接