У меня есть набор из двух правил перезаписи URL-адресов IIS, основанных на автоматическом правиле «UserFriendlyURL». Суть этих двух правил состоит в том, чтобы взять первые два параметра строки запроса (Тип и Серия) и преобразовать их в удобный URL-адрес. Эта страница, если пользователь взаимодействует с поиском на ней, может отправить вас обратно на эту страницу, но с другими параметрами строки запроса, такими как «page» или «pageSize».
Я хочу, чтобы эти нетиповые/серийные параметры оставались параметрами строки запроса, поскольку они не являются частью удобного URL-адреса, но если эти элементы существуют, я хочу, чтобы страница прокручивалась вниз до объекта поиска (поскольку очевидно, что пользователь только что взаимодействовал с ним).
С этой целью я думаю, что я хочу добавить хэш местоположения (#search) в конец. Вместо того, чтобы просматривать каждый поисковый запрос на этой странице и вручную добавлять «#search» в конец (многие из них на самом деле являются действиями по клику, и я не хочу редактировать каждый метод JS, чтобы добавить это в конец сгенерированных URL-адресов ), было бы неплохо просто зафиксировать тот факт, что любой параметр строки запроса (кроме типа/серии) существует, и если это так, добавить «#search» в конец URL-адреса.
Выполнимо ли это, и если да, то как? Я знаю об условных выражениях в регулярных выражениях: http://www.regular-expressions.info/conditional.html< /а>
Но я не думаю, что в данном случае они сработают (буду рад ошибиться!)
<rewrite>
<rules>
<rule name="RedirectUserFriendlyURL1" stopProcessing="true">
<match url="^(cn/)?/product-details$" />
<conditions>
<add input="{REQUEST_METHOD}" pattern="^POST$" negate="true" />
<add input="{QUERY_STRING}" pattern="^Type=([^=&]+)&Series=([^=&]+)$" />
</conditions>
<action type="Redirect" url="{R:1}/product-details/{C:1}/{C:2}" appendQueryString="false" />
</rule>
<rule name="RewriteUserFriendlyURL1" stopProcessing="true">
<match url="^(cn/)?/product-details/([^/]+)/([^/]+)$" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="{R:1}/product-details?Type={URLEncode:{R:2}}&Series={URLEncode:{R:3}}" />
</rule>
</rules>
</rewrite>