设置根路径以在Azure上提供index.html(IIS网络服务器)

时间:2016-08-25 08:19:23

标签: node.js azure iis

我有一个相当标准的节点应用程序部署到Azure。默认情况下,对于http:www.example.com/my_path的请求,Azure会添加web.config xml文件来设置IIS,因此它将:

a)查看/my_path文件夹中是否存在与/public匹配的静态文件 b)将所有其他请求路由到nodejs app。

这接近我想要的,除了对于根路径(http:www.example.com/)我希望它只显示public/index.html,并且此时它将根路径路由到节点应用。

我无法做到这一点。这是我web.config的相关部分:

<!-- First we consider whether the incoming URL matches a physical file in the /public folder -->
<rule name="StaticContent">
  <action type="Rewrite" url="public{REQUEST_URI}"/>
</rule>

<!-- All other URLs are mapped to the node.js site entry point -->
<rule name="DynamicContent">
  <conditions>
    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="True"/>
    <!-- WHAT SHOULD THIS NEXT LINE BE TO IGNORE THE BASE PATH
    FROM THIS RULE TO SEND REQUESTS TO THE NODE APP? -->
    <add input="{REQUEST_URI}" pattern="^$" negate="True"/>
  </conditions>
  <action type="Rewrite" url="server.js"/>
</rule>

1 个答案:

答案 0 :(得分:1)

您可以尝试添加&amp;修改web.config文件中的以下重写内容:

<rule name="SpecificRedirect" stopProcessing="true">
    <match url="/" />
    <action type="Rewrite" url="/index.html" />
</rule>
<!-- All other URLs are mapped to the node.js site entry point -->
<rule name="DynamicContent">
    <match url="/api" />
     <conditions>
          <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="True"/>
     </conditions>
     <action type="Rewrite" url="app.js"/>
</rule>

如果请求与url yourdomain匹配,它将重写根目录中的index.html,并停止由node.js应用程序路由出现index.html请求的reirte进程

还配置node.js应用程序以处理子模式/api中的请求。