Asp.net IIS 7 URL重写模块

Asp.net IIS 7 URL重写模块,asp.net,iis,iis-7,asp-classic,url-rewriting,Asp.net,Iis,Iis 7,Asp Classic,Url Rewriting,我可以看到出站URL重写工作正常,因为它用新的URL替换了页面上的所有URL。所以无论我把这个放在哪里: /post.asp?topic=question&id=123 它把它改写成 /question/123 但是,当我访问重写的URL/question/123时,我得到一个404错误。看起来重写部分可以工作,但是一旦转到重写的URL,加载URL怎么样 我在IIS>URL重写中使用了“创建友好URL”向导,并检查了出站和重定向规则,如本例所示: 以下是Web.Config文件: <?xm

我可以看到出站URL重写工作正常,因为它用新的URL替换了页面上的所有URL。所以无论我把这个放在哪里:

/post.asp?topic=question&id=123

它把它改写成

/question/123

但是,当我访问重写的URL
/question/123
时,我得到一个404错误。看起来重写部分可以工作,但是一旦转到重写的URL,加载URL怎么样

我在IIS>URL重写中使用了“创建友好URL”向导,并检查了出站和重定向规则,如本例所示:

以下是Web.Config文件:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <remove name="RewriteUserFriendlyURL1" />
                <remove name="RedirectUserFriendlyURL1" />
                <rule name="RedirectUserFriendlyURL1" stopProcessing="true">
                    <match url="^post\.asp$" />
                    <conditions>
                        <add input="{REQUEST_METHOD}" pattern="^POST$" negate="true" />
                        <add input="{QUERY_STRING}" pattern="^topic=([^=&amp;]+)&amp;id=([^=&amp;]+)$" />
                    </conditions>
                    <action type="Redirect" url="{C:1}/{C:2}" appendQueryString="true" redirectType="Permanent" />
                </rule>
                <rule name="RewriteUserFriendlyURL1" stopProcessing="true">
                    <match url="^([^/]+)/([^/]+)/?$" />
                    <conditions>
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true"  />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="/post.asp?topic={R:1}&amp;id={R:2}" />
                </rule>
            </rules>
            <outboundRules>
                <remove name="OutboundRewriteUserFriendlyURL1" />
                <rule name="OutboundRewriteUserFriendlyURL1" preCondition="ResponseIsHtml1">
                    <match filterByTags="A, Form, Img" pattern="^(.*/)/post\.asp\?topic=([^=&amp;]+)&amp;(?:amp;)?id=([^=&amp;]+)&amp;(?:amp;)$" />
                    <action type="Rewrite" value="{R:1}{R:2}/{R:3}/" />
                </rule>
            </outboundRules>
        </rewrite>
    </system.webServer>
</configuration>

您是否修改了模式?我使用向导创建了具有相同步骤的规则。但是,我的配置文件与您的不同,它工作顺利。比较模式,尤其是对于OutboundRewriteUserFriendlyURL1

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="RedirectUserFriendlyURL1" stopProcessing="true">
                    <match url="^post\.asp$" />
                    <conditions>
                        <add input="{REQUEST_METHOD}" pattern="^POST$" negate="true" />
                        <add input="{QUERY_STRING}" pattern="^topic=([^=&amp;]+)&amp;id=([^=&amp;]+)$" />
                    </conditions>
                    <action type="Redirect" url="{C:1}/{C:2}" appendQueryString="false" />
                </rule>
                <rule name="RewriteUserFriendlyURL1" stopProcessing="true">
                    <match url="^([^/]+)/([^/]+)/?$" />
                    <conditions>
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="post.asp?topic={R:1}&amp;id={R:2}" />
                </rule>
            </rules>
            <outboundRules>
                <rule name="OutboundRewriteUserFriendlyURL1" preCondition="ResponseIsHtml1">
                    <match filterByTags="A, Form, Img" pattern="^(.*/)post\.asp\?topic=([^=&amp;]+)&amp;(?:amp;)?id=([^=&amp;]+)$" />
                    <action type="Rewrite" value="{R:1}{R:2}/{R:3}/" />
                </rule>
                <preConditions>
                    <preCondition name="ResponseIsHtml1">
                        <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
                    </preCondition>
                </preConditions>
            </outboundRules>
        </rewrite>
    </system.webServer>
</configuration>

您是否修改了模式?我使用向导创建了具有相同步骤的规则。但是,我的配置文件与您的不同,它工作顺利。比较模式,尤其是对于OutboundRewriteUserFriendlyURL1

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="RedirectUserFriendlyURL1" stopProcessing="true">
                    <match url="^post\.asp$" />
                    <conditions>
                        <add input="{REQUEST_METHOD}" pattern="^POST$" negate="true" />
                        <add input="{QUERY_STRING}" pattern="^topic=([^=&amp;]+)&amp;id=([^=&amp;]+)$" />
                    </conditions>
                    <action type="Redirect" url="{C:1}/{C:2}" appendQueryString="false" />
                </rule>
                <rule name="RewriteUserFriendlyURL1" stopProcessing="true">
                    <match url="^([^/]+)/([^/]+)/?$" />
                    <conditions>
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="post.asp?topic={R:1}&amp;id={R:2}" />
                </rule>
            </rules>
            <outboundRules>
                <rule name="OutboundRewriteUserFriendlyURL1" preCondition="ResponseIsHtml1">
                    <match filterByTags="A, Form, Img" pattern="^(.*/)post\.asp\?topic=([^=&amp;]+)&amp;(?:amp;)?id=([^=&amp;]+)$" />
                    <action type="Rewrite" value="{R:1}{R:2}/{R:3}/" />
                </rule>
                <preConditions>
                    <preCondition name="ResponseIsHtml1">
                        <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
                    </preCondition>
                </preConditions>
            </outboundRules>
        </rewrite>
    </system.webServer>
</configuration>


能否从web.config文件发布重写路由配置。能否从web.config文件发布重写路由配置。