如何实现更好的url配置web.config

时间:2014-12-26 04:55:39

标签: asp.net url-rewriting

我有一个像

的网址
catSubcat.aspx?catid=31

它显示板球页面。这个catId来自数据库。 我被要求像

一样来表达它
> Cricket

此catName = Cricket存在于数据库中,但它不存在代码隐藏(Web表单)。 我被要求仅在web.config中执行此操作,并禁止触摸aspx和.cs文件。我怎样才能做到这一点。提前谢谢。

编辑后 这是我的重写规则。我想获得/ CRICKET,但在重写时发现错误。

<rewrite>
        <rules>
            <rule name="Redirect" stopProcessing="true">
                <match url="^catSubcat\.aspx$" />
                <conditions>
                    <add input="{REQUEST_METHOD}" pattern="^POST$" negate="true" />
                    <add input="{QUERY_STRING}" pattern="^catid=([^=&amp;]+)&amp;title=([^=&amp;]+)$" />
                </conditions>
                <action type="Redirect" url="catSubcat/{C:1}/{C:2}" appendQueryString="false" />
            </rule>
            <rule name="Rewrite" stopProcessing="true">
                <match url="^catSubcat/([^/]+)/([^/]+)/?$" />
                <conditions>
                    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                </conditions>
                <action type="Rewrite" url="catSubcat.aspx?catid={R:1}&amp;title={R:2}" />
            </rule>
        </rules>
        <outboundRules>
            <rule name="Outbound" preCondition="ResponseIsHtml1">
                <match filterByTags="A, Form, Img" pattern="^(.*/)catSubcat\.aspx\?catid=([^=&amp;]+)&amp;(?:amp;)?title=([^=&amp;]+)$" />
                <action type="Rewrite" value="{R:1}catSubcat/{R:2}/{R:3}/" />
            </rule>
            <preConditions>
                <preCondition name="ResponseIsHtml1">
                    <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
                </preCondition>
            </preConditions>
        </outboundRules>
    </rewrite>

0 个答案:

没有答案