我有一个类似于
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# 的路由?
如果你想将
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>