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

问题描述 投票:0回答:1

我有一个类似于

example.com/navbar?tab=1
example.com/navbar?tab=2
的 URL,我希望能够将 URL 重写 为独立的 slug URL。我希望
example.com/navbar?tab=1
重写为
example.com/this-is-my-slug
example.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
我尝试使用重写地图,各种不同的模式,但这就是我所拥有的现在在我的
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# 的路由?

iis url-rewriting
1个回答
0
投票

如果你想将

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>
© www.soinside.com 2019 - 2024. All rights reserved.