具有相同模式的友好URL

时间:2013-04-02 08:38:55

标签: iis web-config rewrite friendly-url

我可以重定向并制作一个友好的网址:

<rule name="RedirectUserFriendlyURL1" stopProcessing="true">
    <match url="^Product/Tour\.aspx$" />
        <conditions>
            <add input="{REQUEST_METHOD}" pattern="^POST$" negate="true" />
        </conditions>
        <action type="Redirect" url="Product/Tour" appendQueryString="false" />
</rule>

<rule name="RewriteUserFriendlyURL2" stopProcessing="true">
    <match url="^Product/Tour$" />
        <conditions>
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
        </conditions>
    <action type="Rewrite" url="Product/Tour.aspx" />
</rule>

但是,例如,如果我有:

http://www.domain.com/Product/Features.aspx
http://www.domain.com/Product/Download.aspx
http://www.domain.com/Product/FAQ.aspx

我可以编写一条规则来为所有这些链接建立友好的URL以便接收吗?

http://www.domain.com/Product/Features
http://www.domain.com/Product/Download
http://www.domain.com/Product/FAQ

当有几个链接时很容易,但是有很多规则很难维护。

1 个答案:

答案 0 :(得分:0)

您可以使用正则表达式模式和back reference来执行此操作:

<rule name="RedirectUserFriendlyURL1" stopProcessing="true">
    <match url="^Product/([A-z0-9]+)\.aspx$" />
        <conditions>
            <add input="{REQUEST_METHOD}" pattern="^POST$" negate="true" />
        </conditions>
        <action type="Redirect" url="Product/{R:1}" appendQueryString="false" />
</rule>

<rule name="RewriteUserFriendlyURL2" stopProcessing="true">
    <match url="^Product/([A-z0-9]+)$" />
        <conditions>
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
        </conditions>
    <action type="Rewrite" url="Product/{R:1}.aspx" />
</rule>

如果你要重写很多网址,你也应该阅读有关Rewrite Maps的文档。