Конфигурация IIS для использования Angular и перенаправление на HTTPS
Angular приложение по своей природе одностранично. И вся информация находится в файле index.html. При переходе по роутам внутри приложения проблем не возникает. Но если перезагрузить страницу, находясь на роуте отличном от корневого, заработаем ошибку "404 - File or directory not found".
Вторая проблема -- перенаправление пользователй, пришедших по протоколу http на https. Для этого, получаем и устанавливаем сертификат https в корень сервера. В биндинге нашего сайта прописываем одноименное http имя сайта, например, mysite.com, выбираем https и в сертификатах выбираем сертификат, привязанный к нашему сайту.
Для того, чтобы решить все эти проблемы, устанавливаем модуль URL Rewrite и прописываем правила.
В корневой директории сайта в файл web.config прописываем следующие правила:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Redirect to HTTPS" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{HTTPS}" pattern="OFF" ignoreCase="true" />
</conditions>
<action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}{REQUEST_URI}" appendQueryString="false" />
</rule>
<rule name="Angular Routes" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="/" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Вторая проблема -- перенаправление пользователй, пришедших по протоколу http на https. Для этого, получаем и устанавливаем сертификат https в корень сервера. В биндинге нашего сайта прописываем одноименное http имя сайта, например, mysite.com, выбираем https и в сертификатах выбираем сертификат, привязанный к нашему сайту.
Для того, чтобы решить все эти проблемы, устанавливаем модуль URL Rewrite и прописываем правила.
В корневой директории сайта в файл web.config прописываем следующие правила:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Redirect to HTTPS" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{HTTPS}" pattern="OFF" ignoreCase="true" />
</conditions>
<action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}{REQUEST_URI}" appendQueryString="false" />
</rule>
<rule name="Angular Routes" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="/" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Комментарии
Отправить комментарий