在重写规则中为特定页面追加查询字符串 Web.config

Append Query String for a specific page in Rewrite Rule Web.config

我要添加打开以下页面 http://test.com/Collection.aspx?title=Women

作为

http://tests.com/Women

http://tests.com/Collection.aspx?title=Women

http://test.com/pathann

我尝试使用以下重写规则,但这些规则适用于所有页面,我只想针对这个特定部分实施。

 <rule name="RedirectUserFriendlsssyURL1" stopProcessing="true">
      <match url="^Collection\.aspx$" />
      <conditions>
        <add input="{REQUEST_METHOD}" pattern="^POST$" negate="true" />
        <add input="{QUERY_STRING}" pattern="^title=([^=&amp;]+)$" />
      </conditions>
      <action type="Redirect" url="{C:1}" 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="Collection.aspx?title={R:1}" />
    </rule>

请帮助我如何仅针对这些特定页面执行此操作。实际上,如果我申请所有页面,它会阻止其他一些功能正常工作。

在你的情况下我要做的是只将重定向部分留给 url 重写模块:

<rule name="RedirectUserFriendlsssyURL1" stopProcessing="true">
   <match url="^Collection\.aspx$" />
   <conditions>
     <add input="{REQUEST_METHOD}" pattern="^POST$" negate="true" />
     <add input="{QUERY_STRING}" pattern="^title=([^=&amp;]+)$" />
   </conditions>
   <action type="Redirect" url="{C:1}" appendQueryString="false" />
</rule>

然后通过 global.asax:

中的路由处理其余的
void Application_Start(object sender, EventArgs e)
{
    RegisterRoutes(RouteTable.Routes);
}

void RegisterRoutes(RouteCollection routes)
{
    routes.MapPageRoute("CollectionRoute",
        "{title}",
        "~/Collection.aspx", false,
        new RouteValueDictionary(),
        //Here you can define the regex pattern to match the title phrases
        new RouteValueDictionary {
            { "title", "(women)|(pathann)" }
        });
}

当然,如果您仍然希望让 url 重写模块处理所有事情,您可以这样定义规则:

<rule name="RewriteUserFriendlyURL1" stopProcessing="true">
      <match url="(women)|(pathann)" />
      <conditions>
        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
      </conditions>
      <action type="Rewrite" url="Collection.aspx?title={R:1}" />
</rule>