iis 使用NET 7 API的React应用程序-在一个网站上重写url

bd1hkmkf  于 2023-10-19  发布在  React
关注(0)|答案(1)|浏览(133)

我正在尝试在一个IIS站点上使用NET 7 API托管React应用程序。在根文件夹有这样的文件结构

  • index.html
  • 其他文件js/css
  • api/my-app.exe(在子文件夹api中有所有.NET api二进制文件)

Api工作是因为我请求 /API/status healthcheck方法,它返回200。但是当我请求 /index.html 时,我得到 404(NotFound)
你知道我应该如何设置重写规则或配置它以其他方式获得index.html文件
我的web.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath=".\api\my-app.exe" arguments=".\api\my-app.dll" stdoutLogEnabled="true" stdoutLogFile=".\iis-logs\" hostingModel="OutOfProcess" />
        <directoryBrowse enabled="false" />
        <httpErrors errorMode="DetailedLocalOnly" existingResponse="Auto" />
        
        <rewrite>
            <rules>
                <clear />
                <rule name="Stop process React routes" stopProcessing="true">
        TODO: how to write rule to get index.html file ??
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>
ctehm74n

ctehm74n1#

您可以尝试修改web.config文件中的重写规则。以下是如何设置重写规则以服务于React应用的index.html文件和其他静态资源:

<rewrite>
         <rules>
             <rule name="Serve React App" 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>

您需要根据特定的项目结构和需求调整路径和配置。

相关问题