tl; dr;
я ошибочно принял URL /тест/что/путем представляет собой абстрактную виртуальную акцию (по аналогии с ASP.NET MVC маршрутизации), а не конкретные физические файлов на сервере. Не в том случае, если вы это сделаете.
Как работают исправления для статических ресурсов, независимо от того, что вы набираете на URL-адресе, он должен существовать на диске на сервере, начиная с пути, указанного в «каталоге». Итак, когда я спрашиваю localhost: 8080/test, я действительно ищу ресурс /myPublic/test/testPage.html на диске; если я напечатаю localhost: 8080/test/otherPage.html, я действительно ищу ресурс /myPublic/test/otherPage.html на диске.
Детали:
С первого маршрута
server.get('.*', restify.serveStatic({
'directory': __dirname + '/myPublic',
'default': 'testPage.html'
}));
регулярное выражение '*' говорит соответствовать что-нибудь! Таким образом, в браузере я могу ввести локальный: 8080/, локальный: 8080/testPage.html, локальный: 8080/otherPage.html, локальный: 8080/все/testPage.html, локальный: 8080/akira/fubuki/ и т. Д., И запрос GET будет перенаправлен на вышеупомянутый обработчик и предоставил пути /myPublic/testPage.html, /myPublic/otherPage.html, /myPublic/whatever/testpage.html , /myPublic/akira/fubuki/testpage.html и т. д. на диске, запрос будет подан.
С второго маршрутом
server.get('/test', restify.serveStatic({
'directory': __dirname + '/myPublic',
'default': 'testPage.html'
}));
этот обработчик будет соответствовать запросу GET локальных: 8080/теста, и он будет служить страницу по умолчанию на диске в общественном/тесте/тестовой странице.html.
Для того, чтобы обработчик более гибким, я мог бы использовать RegEx
server.get(/\/test.*\/.*/, restify.serveStatic({
'directory': __dirname + '/myPublic',
'default': 'testPage.html'
}));
Это RegEx говорит матч «/ тест», а затем любой символ (.) 0 или более раз (*), а затем slash (/), за которым следует любой символ 0 или более раз. Примеры могут быть LocalHost: 8080/тест/, локальный: 8080/семенник/, локальный: 8080/семенника/, локальный: 8080/тест/otherPage.html, LocalHost: 8080/семенника/otherPage .html и при условии, что пути + соответствующие файлы существуют на диске, например /public/test/testPage.html, /public/testis/testPage.html, /public/testicles/otherPage.html и т. Д., Тогда они будут отправлены в браузер.
Да, я также пробовал регулярное выражение перед отправкой вопроса, но это не сработало. Я провел дальнейшие эксперименты и вскоре отправлю ответ. По моему скромному мнению, концепция маршрутизации в восстановлении нарушается. – joedotnot