我有一个相当标准的节点应用程序部署到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>
答案 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
中的请求。