Назад | Перейти на главную страницу

Правило перезаписи IIS для проверки строки запроса и добавления ее, если ее нет

Я пытаюсь создать правило перезаписи 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="&amp;{QUERY_STRING}" pattern="^(&amp;.+)|^&amp;$" />
  </conditions>
  <action type="Redirect" url="http://{HTTP_HOST}/{R:0}?hssc=1{C:1}" appendQueryString="false"  />
</rule>

Это всегда будет добавлять hssc = 1 в начало строки запроса, сохраняя при этом остальную часть строки запроса. Это работает для всех ваших примеров. У меня он был добавлен, а не добавлен, но я предполагаю, что это тот же конечный результат.