Я пытаюсь создать правило перезаписи URL-адреса IIS, которое добавляет параметр URL-адреса к URL-адресу. Параметр url hssc
. Таким образом, любой URL-адрес, обрабатываемый сервером, нуждается в этом параметре. Имея в виду, что некоторые URL-адреса уже будут иметь свои собственные параметры, а другие URL-адреса не будут, корневые URL-адреса и т. Д., Иногда необходимо добавить ?hssc=1
или &hssc=
- итак, если у меня есть URL-адрес, такой:
Я также хочу, чтобы URL-адрес не был скрыт (как при внутренней переписывании за кулисами). Мне нужно, чтобы URL-адрес отображался в URL-адресе, поэтому, когда пользователи копируют URL-адрес или добавляют его в закладки, параметр присутствует.
Я поставил условие, чтобы оно соответствовало \&hssc|\?hssc
- теперь мне просто нужен способ записать URL-адрес, чтобы он отображался и сохранял часть исходного URL-адреса, которая уже существует.
Это должно помочь:
<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 в начало строки запроса, сохраняя при этом остальную часть строки запроса. Это работает для всех ваших примеров. У меня он был добавлен, а не добавлен, но я предполагаю, что это тот же конечный результат.