IIS URL重写传递查询参数,但不将其包含在URL中

knpiaxh1  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(158)

我有一个类似于example.com/navbar?tab=1example.com/navbar?tab=2的网址,我希望能够 * 重写 * URL到一个独立的slug URL.我想example.com/navbar?tab=1重写为example.com/this-is-my-slugexample.com/navbar?tab=2重写为example.com/another-slug-of-mine我想这些URL重写,而不是重定向,所以用户不必看到查询参数.但我也想为这两个页面不被混合,所以我不允许去example.com/this-is-my-slug?tab=2,并最终查看example.com/another-slug-of-mine我尝试使用重写Map,各种不同的模式,但这是我现在在我的Web.config

...
<rule name="NavigationRewrite1">
    <match url="^this-is-my-slug" ignoreCase="false" />
    <action type="Rewrite" url="/navbar?tab=1" appendQueryString="false" />
</rule>
<rule name="NavigationRewrite2">
    <match url="^another-slug-of-mine" ignoreCase="false" />
    <action type="Rewrite" url="/navbar?tab=2" appendQueryString="false" />
</rule>
...

字符串
有没有一种方法可以使用IIS重写规则来实现我正在尝试做的事情?或者我必须从C#中查找路由?

x8diyxa7

x8diyxa71#

如果你想把example.com/navbar?tab=1重写为example.com/this-is-my-slug,你可以参考这个规则:

<rule name="Test" stopProcessing="true">
  <match url="^navbar$" />
    <conditions>
      <add input="{QUERY_STRING}" pattern="tab=1" />
    </conditions>
  <action type="Redirect" url="example.com/this-is-my-slug" redirectType="Temporary" />
</rule>

字符串

相关问题