У меня есть набор из двух правил перезаписи URL-адреса IIS на основе автоматического правила UserFriendlyURL. Суть этих двух правил состоит в том, чтобы перенести первые два параметра querystring (Type и Series) и преобразовать их в удобный для пользователя URL. Эта страница, если пользователь взаимодействует с поиском на ней, может отправить вас на эту страницу, но с другими параметрами строки запроса, такими как «страница» или «pageSize».Переписывание URL-адреса IIS, Условное изменение URL-адреса
Я хочу, чтобы эти параметры не-типа/серии оставались в качестве параметров строки запроса, поскольку они не являются частью дружественного URL-адреса, но если эти элементы существуют, я хочу, чтобы страница прокручивалась вниз до объекта поиска (поскольку очевидно, что пользователь просто взаимодействовал с ним).
С этой целью, я думаю, что я хочу добавить местоположение Hash (#search) до конца. Вместо того, чтобы проходить через каждый поисковый запрос на этой странице и вручную добавлять «#search» до конца (многие из них фактически являются действиями onclick, и я не хочу редактировать каждый JS-метод, чтобы добавить это к концу сгенерированных URL-адресов), было бы неплохо просто зафиксировать тот факт, что существует любой параметр querystring (кроме типа/серии), и если это так, добавьте «#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>