IIS7 и rewriteMap для дружественных URL
У меня есть внешний файл "rewritemaps.config" со следующими записями:
<rewriteMaps>
<rewriteMap name="Cat1">
<add value="2" key="wheels-and-castors" />
<add value="3" key="agricultural" />
<add value="4" key="hydraulic-hose-and-fittings" />
<add value="5" key="engineering-plastics" />
<add value="6" key="sealing-and-jointing" />
<add value="7" key="health-and-safety" />
<add value="8" key="hose-and-ducting" />
<add value="9" key="hose-couplings-and-clamps" />
<add value="10" key="general-consumables" />
<add value="11" key="ceramics" />
<add value="12" key="rubber-and-polyurethane" />
</rewriteMap>
</rewriteMaps>
Как переписать URL-адреса, такие как: http://www.domain.com/wheels-and-castors/
на следующее: http://www.domain.com/category.asp?catID=2
Обратите внимание, что это перезапись, а не перенаправление.
Я думаю, что я почти там с финальной строкой переписывания, но я борюсь за матч и условия. Моя текущая последняя строка перезаписи:
<action type="Rewrite" url="category.asp?catID={Cat1:{C:1}}" appendQueryString="false" />
(где Cat1 - это имя моей карты перезаписи)
Спасибо за любую помощь. Ура, Крис.
1 ответ
Хорошо, после хорошей недели исследований и проб и ошибок, у меня все получилось. Вот полное правило, которое я использую, которое ссылается на внешний файл "rewritemaps.config".
<rule name="Match Category URLs" stopProcessing="true">
<match url="^(?![^/]+?\.(?:css|png|jpg|axd)$)([^/]+)/?$" />
<conditions>
<add input="{URL}" pattern="(.asp|.xml)" negate="true" />
</conditions>
<action type="Rewrite" url="category.asp?catID={CatMap:{R:1}}" appendQueryString="false" />
</rule>
Работает отлично сейчас.
PS. Я переименовал rewriteMap в "CatMap" (чтобы никто не запутался, если после этого).