Azure (IIS) でホストされ、HTML5 モードを使用する Node.JS の上に構築された AngularJS アプリがあります。Node.JS を使用せず、IIS で AngularJS のみを使用する状況では、IIS の Web.config で次のルールを使用して、ページの更新によって 404 エラーが発生しないように URL を書き換えることができます。
<rule name="AngularJSHTML5Mode" 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>
ただし、Node.js の上で (ExpressJS を使用して) Angular を使用すると、IIS で上記のルールを使用しても、ページの更新時に "Cannot GET /myroute" などのエラーが発生します。Server.js または Web.config の別のルールで構成する必要があるものはありますか。
これが私が現時点でExpressに持っているものです。Express 4を使用しています:
// Initialize Express App
var app = express();
var listener = app.listen(1337, function () {
console.log('Listening on port ' + listener.address().port); //Listening on port 1337
});
app.use(express.static(__dirname + "/public"));
実際には、SPA でページの更新を行うべきではないことは理解していますが、実際には発生しており、これを説明する必要があります。