【问题标题】:Rewrite and redirect in asp.net rewrite rules在 asp.net 重写规则中重写和重定向
【发布时间】:2020-02-12 06:06:33
【问题描述】:

我真的很难理解重写规则以及为什么我的不符合预期。

我有 2 条规则,基本上我需要实现的是,无论子目录如何,它都会获取我的漂亮 URL,然后重定向到特定文件夹。然后这将使用一个 ID,该 ID 在漂亮的 URL 中指定,然后在我的解决方案中点击相应的页面。

因此,此规则应该能够抓取漂亮 URL 之前的任何内容,然后从根目录重定向到文件夹 /gen1/。

<rule name="PokemonGen1Rule 1">
    <match url="^gen1-[\w-]*[^?]*-pkmid([\d]+)\.html" ignoreCase="true" />
    <action type="Redirect" url="^/gen1/{R:0}" />
</rule>

然后,此规则应在到达 gen1 文件夹时捕获 url,并使用包含在漂亮 url 中的 id,将其作为参数传递给 pokemon.aspx 页面。

<rule name="PokemonGen1Rule 2">
    <match url="^gen1/gen1-[\w-]*[^?]*-pkmid([\d]+)\.html" ignoreCase="true" />
    <action type="Rewrite" url="/gen1/pokemon.aspx?pkmid={R:1}" 
    appendQueryString="false" logRewrittenUrl="true" />
</rule>

它不起作用,但在我的大脑中我无法弄清楚什么是坏的。我尝试了各种不同的人字形组合,以及诸如此类的东西,但它不起作用。

任何建议将不胜感激。

【问题讨论】:

    标签: c# .net url-rewriting


    【解决方案1】:
    <rule name="PokemonGen1Rule 1" stopProcessing="true">
        <match url="[\w-]*[^?]*/(gen1-[\w-]*[^?]*-pkmid([\d]+)\.html)" 
        ignoreCase="true" />
           <conditions>
             <add input="{REQUEST_URI}" negate="true" 
               pattern="/gen1/gen1-[\w-]*[^?]*-pkmid([\d]+)\.html" 
               ignoreCase="true" />
           </conditions>
       <action type="Redirect" url="/gen1/{R:1}" />
    </rule>
    <rule name="PokemonGen1Rule 2" stopProcessing="true">
        <match url="[\w-]*[^?]*/gen1-[\w-]*[^?]*-pkmid([\d]+)\.html" 
        ignoreCase="true" />
         <action type="Rewrite" url="/gen1/pokemon.aspx?pkmid={R:1}" 
         appendQueryString="false" logRewrittenUrl="true" />
    </rule>
    

    解决了!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-01
      • 2016-06-08
      • 1970-01-01
      相关资源
      最近更新 更多