Я использую функцию перезаписи URL-адреса в IIS7, чтобы изменить URL-адрес:
/main.asp?category=Name_Of_A_Product
В:
/category/name-of-a-product/
Я создал правила перенаправления и перезаписи ниже, которые выполняют большую часть работы, за исключением того, что я не могу найти способ заменить символы подчеркивания дефисами.
Каждый URL-адрес может иметь от нуля до множества символов подчеркивания, и я пытаюсь заменить их одним регулярным выражением, чтобы избежать цепочек переадресации 301 (поскольку я считаю, что это плохо для SEO).
Вы знаете, как (или если) это можно сделать?
<rule name="Redirect REAL to FRIEDNLY" enabled="true" stopProcessing="true">
<match url="^main\.asp$" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{REQUEST_METHOD}" pattern="^POST$" negate="true" />
<add input="{QUERY_STRING}" pattern="^category=([^=&]+)($|&(.*))$" />
</conditions>
<action type="Redirect" url="category/{ToLower:{C:1}}/" appendQueryString="false" />
</rule>
<rule name="Rewrite FRIEDNLY to REAL" stopProcessing="false">
<match url="^category/([^/]+)/?$" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="main.asp?category={R:1}" />
</rule>