0

我重写了一个旧应用程序,然后有相当多的外部应用程序重定向到包含 ?id={someid} 查询字符串的特定 url.. 但是.. episerver 似乎对 id-key 做了一些事情.. 因为那从来没有显示在 Request.QueryStrings.AllKeys..所以我的猜测是 Epi 正在做某种 url-rewriting 或其他什么.. 有什么办法可以解决这个问题,并且只能将 id-key 用于特定页面/地点?

4

2 回答 2

0

查询字符串参数 id 由 EPiServer 保留。您需要在 EPi 接触它之前对其进行检查。

更新:如果您升级到 EPi 7.5,查询参数“ID”将不再由 EPi 处理,除非您注册 EPiServer.Web.Routing.ClassicLinkRoute。

于 2013-11-20T11:20:15.983 回答
0

我建议使用 IIS 7 url 重写模块将 id 查询字符串键转换为不会与 EPiServer 冲突的内容,因为在友好的 url 在 url 重写提供程序中转换后,id 用于 EPiServers 内部 url 中的页面 id。IIS url 重写模块将让您有机会在点击 EPiServer 之前更改它。

您可以编写一个正则表达式来捕获 id 参数,因此您可以将以下规则添加到您的重写配置中

    <rule name="QueryString">
      <match url="(.*)" />
      <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
        <add input="{QUERY_STRING}" pattern="(.*)id=([a-zA-Z0-9_-]+)(.*)" />
      </conditions>
      <action type="Rewrite" url="{R:1}?{C:1}oldid={C:2}{C:3}" appendQueryString="false" />
    </rule>

哪个会将 url 重写为 /my-url-path/?oldid=123 &另一个=参数

更多关于如何在 IIS url 重写模块中作为规则实现的信息

于 2013-11-28T00:14:32.493 回答