Как мне написать правила перезаписи в IIS для обработки этих сценариев:
Структура папки:
[AngularApp1]
-- app.js
-- appController.js
-- index.html
[AngularSecondApp]
-- app.js
-- appController.js
-- index.html
[DomainSubApp]
-- app.js
-- appController.js
-- index.html
favicon.ico
gulpfile.js
web.config
AngularApp1
is NOT HTML5 настроен и использует префикс DEFAULT #!
.Таким образом, страницы обычно выглядят так: https://(www.)?mywebsite.com/#!/state...
AngularSecondApp
IS , настроенный в режиме HTML5 , и использует NO ''
hashPrefix.Таким образом, страницы обычно выглядят так: https://(www.)?mywebsite.com/state...
DomainSubApp
настроен NOT HTML5 настроен и использует префикс DEFAULT #!
,Страницы обычно выглядят так: https://domainsubapp.mywebsite.com/#!/state...
Маршрутизация
Сервер должен использовать AngularSecondApp/index.html
, если:
- субдомен
''
или'www'
И ... - URI?это:
^/\w+/?.*$
- но не файлы
...
Сервер должен использовать DomainSubApp/index.html
, если:
...
В противном случае сервер должен использовать AngularApp1/index.html
ВКЛЮЧАЯ:
- субдомен
''
или 'www'
И ... - URI?это:
^/(#!/.*)?$
- но не файлы
Моя личная путаница
Я понимаю, что вам нужно учитывать ФАЙЛЫ.Например, http://mywebsite.com/favicon.ico
или http://mywebsite.com/someFile.ext
или http://mywebsite.com/scripts/scriptFile.js
.Поэтому некоторые из моих попыток потерпели неудачу, потому что мои паттерны были слишком общими.Таким образом, запросы на файлы были также переписаны / перенаправлены.
Нужно ли что-либо делать, чтобы обеспечить сохранение угловой маршрутизации?Итак, если я перейду к http://mywebsite.com/route/param1/param2
, это должно быть переписано / перенаправлено на http://mywebsite.com/AngularSecondApp/index.html
Куда уходит route/param1/param2
?
Что я БЫЛ :
Iпроизнесите "Пришло", потому что мне ранее требовалась подпапка в URL-адресе с именем AngularSecondApp
, например: https://(www.)?mywebsite.com/AngularSecondApp/state...
.Это сделало вещи проще.Но руководство хочет, чтобы я избавился от этой подпапки в URL, отсюда и эта проблема.
Итак, вот что у меня было:
<clear />
/*https forced redirect is here... irrelevant*/
<rule name="AngularSecondApp rewrite" stopProcessing="true">
<match url="^AngularSecondApp/.*$" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="/AngularSecondApp/index.html" />
</rule>
<rule name="AngularApp1 redirect">
<conditions>
<add input="{REQUEST_URI}" pattern="^(/AngularApp1)?/index\.html$" ignoreCase="true" />
</conditions>
<action type="Redirect" url="/" />
</rule>
<rule name="AngularApp1 rewrite">
<conditions>
<add input="{REQUEST_URI}" pattern="^/$" />
</conditions>
<action type="Rewrite" url="/AngularApp1/index.html" />
</rule>