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

IIS URL Rewrite pass query parameter without including it in the URL

提问人:Hashim Kayani 提问时间:11/18/2023 更新时间:11/20/2023 访问量:35

问:

我有一个类似于 URL 的 URL,或者我希望能够将 URL 重写为独立的 slug URL。我想重写和重写 我希望重写这些 URL 而不是重定向,这样用户就不必看到查询参数。但我也希望这两个页面不要混淆,这样我就不被允许去并最终查看我尝试使用重写地图,各种不同的模式,但这就是我现在拥有的.example.com/navbar?tab=1example.com/navbar?tab=2example.com/navbar?tab=1example.com/this-is-my-slugexample.com/navbar?tab=2example.com/another-slug-of-mineexample.com/this-is-my-slug?tab=2example.com/another-slug-of-mineWeb.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 重写

评论


答:

0赞 samwu 11/20/2023 #1

如果要重写为 ,可以参考以下规则:example.com/navbar?tab=1example.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>