У меня есть приложение AngularJS, построенное поверх Node.JS, которое размещено в Azure (IIS) и использует режим HTML5. В ситуациях, когда я не использовать Node.js и просто использовать AngularJS с IIS, я могу переписать URL, так что обновление страницы не вызывает ошибку 404 с помощью следующего правила в IIS Web.config:URL-адрес переопределения IIS в AngularJS с узлом для углового режима HTML5
<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>
Однако, используя Angular поверх Node.js (с ExpressJS), я получаю сообщение об ошибке «Невозможно GET/myroute» на странице обновления, даже с приведенным выше правилом в IIS. Есть ли что-то, что мне нужно настроить в Server.js или другое правило в Web.config.
Вот что я имею в Экспрессе на данный момент. Я использую 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, как показывает практика, но они делают, и мне нужно, чтобы учесть это.
Нет, вы должны настроить его в узле.js. Когда запрос передается node.js, web.config ничего не делает. –
У вас есть пример того, как это сделать? – Kode
У меня нет, но обычно это просто простой app.get (промежуточное программное обеспечение, которое идет за вашими маршрутами и делает index.html вместо 404. –