Правило перезаписи IIS для проверки строки запроса и добавления ее, если ее там нет
Я пытаюсь создать правило перезаписи URL IIS, которое добавляет параметр URL в URL. Параметр url hssc
, Таким образом, любой URL, который обрабатывается через сервер, нуждается в этом параметре. Помните, что некоторые URL-адреса уже будут иметь свои собственные параметры, а другие URL-адреса не будут, корневые URL-адреса и т. Д., Иногда потребуется добавить ?hssc=1
или же &hssc=
- Итак, если у меня есть URL, который как таковой:
- http://www.blah.com/ должен стать http://www.blah.com/?hssc=1
- http://www.blah.com/index.html должен стать http://www.blah.com/index.html?hssc=1
- http://www.blah.com/?q=5 должен стать http://www.blah.com/q=5&hssc=1
- http://www.blah.com/index.html?q=5 должен стать http://www.blah.com/index.html?q=5&hssc=1
- http://www.blah.com/index.html?q=5&hssc=1 следует оставить в покое
Я также хочу, чтобы URL не был скрыт (как в бэкэнде, переписанном за кулисы). Мне нужно, чтобы URL-адрес отображался в URL-адресе, поэтому, когда пользователи копируют URL-адрес или добавляют его в закладки, параметр присутствует.
Я установил условие, чтобы соответствовать ему \&hssc|\?hssc
- теперь мне просто нужен способ написать URL, чтобы он появлялся и сохранял ту часть исходного URL, которая уже есть.
1 ответ
Это должно сделать трюк:
<rule name="Add hssc param" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{QUERY_STRING}" pattern="hssc=1" negate="true" />
<add input="&{QUERY_STRING}" pattern="^(&.+)|^&$" />
</conditions>
<action type="Redirect" url="http://{HTTP_HOST}/{R:0}?hssc=1{C:1}" appendQueryString="false" />
</rule>
Это всегда будет предшествовать hssc=1 к началу строки запроса, сохраняя при этом остальную часть строки запроса. Это работает для всех ваших примеров. Я предпочел, а не добавлять, но я предполагаю, что это тот же самый конечный результат.