2016-08-25 81 views
2

我有一個相當標準的節點應用程序部署到Azure。默認情況下,對於http:www.example.com/my_path請求Azure中增加了一個web.config xml文件來設置IIS所以它會:設置用於在Azure上提供index.html的根路徑(IIS網絡服務器)

一)看到,如果一個靜態文件匹配/my_path/public文件夾
b存在)路由所有其他請求到nodejs應用程序。

除了根路徑(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

花一些時間在IIS.net的相關頁面上。它顯示了很多例子,你應該能夠學會如何使用它,而不是依賴別人。 –

+0

@LexLi如果是你投票結束這個問題,你能幫我理解爲什麼嗎?我覺得我已經提出了一個關於編程的具體問題,它有一個明確的答案。這種「脫離主題」的stackoverflow是什麼方式?謝謝。 –

+0

如果您以前不知道,IIS配置問題屬於ServerFault。 –

回答

1

你可以嘗試添加&修改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在你的根目錄中,並停止rewirte進程,該進程會將請求路由到node.js應用程序。

而且還配置node.js應用程序來處理子模式/api中的請求。

相關問題