【问题标题】:Redirect URL with specific section in it - ASP.NET MVC带有特定部分的重定向 URL - ASP.NET MVC
【发布时间】:2019-01-13 14:01:00
【问题描述】:

我有一个包含几个问题(如常见问题解答)的现有页面,其 URL 类似于

主要帮助网址:sitename.com/help 特定部分的 URL:sitename.com/help#topic123

现在要求已更改,我被告知将 /help 重定向(临时)到主页,查询字符串为 sitename.com?showhelp。

我在 web.config 中使用了一个重定向规则,该规则在主帮助页面上运行良好。

Requested URL: sitename.com/help
Redirected to URL: sitename.com?showhelp

问题 当我将特定主题 URL 重定向到新主题时,它仍会在 URL 末尾显示 #topic123,例如

Requested URL: sitename.com/help#topic123
Redirected to URL: sitename.com?showhelp#topic123
Required URL: sitename.com?showhelp

使用的规则:

<rule name="newhelp" stopProcessing="true">
    <match url="^help" />
    <action type="Redirect" url="?showhelp" redirectType="Temporary" />
</rule>

我也尝试过从控制器操作方法重定向,但这并不能解决问题。我无法阅读 Request.Url 中的#topic123 部分

【问题讨论】:

  • 这是一个URI fragment,仅供浏览器使用。它出现在那里是因为一些 Javascript 代码把它放在那里。它从未传递给服务器
  • 那么如果我在浏览器sitename.com/help#topic123中请求,不应该去服务器吗?
  • 阅读链接。它表示任何浏览器都不会将片段发送到服务器。链接不应包含片段,除非这是一个旨在在调用服务器之前在浏览器上处理片段的 SPA。例如,使用自己的控制器处理请求并调用后端服务的 Angular 或 React 应用程序

标签: c# url redirect model-view-controller


【解决方案1】:

使用 (#.+) 获取额外的片段

<rule name="newhelp" stopProcessing="true">
    <match url="^help(#.+)?" />
    <action type="Redirect" url="?showhelp{R:1}" redirectType="Temporary" />
</rule>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-23
    • 1970-01-01
    • 1970-01-01
    • 2011-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多