我正在使用 IIS7 中的 URL 重写功能来转换 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>