【问题标题】:How to redirect user another .NET page (in same domain) but not change URL in addressbar?如何将用户重定向到另一个 .NET 页面(在同一域中)但不更改地址栏中的 URL?
【发布时间】:2011-11-30 22:58:06
【问题描述】:

我正在开发一个允许用户在同一域下拥有自己主页的公司网站。 URL 类似于http://mydomain.com/UserName 我们将每个用户的内容保存在数据库中,该数据库显示在位于http://mydomain.com/users/default.aspx 的页面上(它通过在数据库中查找 URL 来获取用户的内容)

我希望 URL 在地址栏中保持不变,这样 看起来 每个用户都有自己的文件夹。

我尝试过使用 Server.Transfer,但我的会话变量最终什么都没有。 RewritePath 有效,但地址栏中的 URL 发生了变化。我无法在 404 页面中执行代码,因为地址栏会显示 404.aspx?aspxerrorpath={requestedURL}

我的主要目标是重定向而不是丢失地址栏中的内容。我正在使用 ASP.NET(如果 aspx 扩展没有放弃它,哈哈)

【问题讨论】:

  • 您希望 what url 与 what other url 保持相同?我不清楚你在这里真正想要什么。
  • 如果用户输入mydomain.com/UserName 我希望它保留在地址栏中,但后端重定向到另一个页面并抓取用户的内容,看起来每个用户都有一个文件夹域。
  • 查看 Ruzzie 的答案;你想要的是路由或 URL 重写。忘记所有关于Server.Transfer 的事情。使用路由,您可以为满足特定模式的 URL 自动和透明地调用特定页面的路由定义模式......就像 www.mydomain.com/Users/AndrewBarber 的任何内容一样,转到 www.mydomain.com/UserPage.aspx ?username=AndrewBarber 在幕后,无需更改 URL,使用任何替换您想要的用户名。

标签: asp.net .net server.transfer


【解决方案1】:

您可以使用Routing 或重写将用户网址映射到您的asp 脚本。这样不同的 url 就可以使用同一个 aspx 脚本了。

重写 http://www.helicontech.com/isapi_rewrite/doc/RewriteRule.htm

【讨论】:

【解决方案2】:

你不能完全这样做。 URL 是用户识别服务器所依赖的。但是您可以在同一页面上显示该内容。您可以使用全屏 iframe 并在其中加载内容并将其显示给用户,这很容易实现。

编辑:请注意,您甚至不需要 iframe。如果您想在您的网站中显示其他页面,您可以下载其内容并输出。 (不过,您需要进行一些更改)。但更简单的方法是使用 iframe。

【讨论】:

  • 一个 iFrame - ewwwww。 stackoverflow.com/questions/362730/…
  • 我没有说 iFrame 是一个好的解决方案,我提到了一个替代解决方案,说 iFrame 是容易遵循的路径。尽管有时,在极少数情况下,iFrame 是唯一的路径。像某些人一样,我不会以非黑即白的方式思考问题。
【解决方案3】:

你可以通过在default.aspx中有一个Server.Execute来实现你想要的,例如:

<%Server.Execute("path to another aspx page you wish to display inline while keeping the URL in tact")%>

【讨论】:

  • Server.Execute 是我提出的第二个选项,它具有需要虚拟路径的限制(在这种情况下不会引入任何限制),但使用它会引入一些问题。例如,如果您在 &lt;a&gt; 标签中有任何相对路径,它不会修复它们,从而留下一些损坏的链接。
  • 好的,您的色彩丰富并推荐 iFrame (呵呵)是可以原谅的。对于您提出的相对链接缺陷,问题的关键是在不更改 URL 的情况下重定向到更改内容的同一页面,并且为了做到这一点,无论如何都需要更改链接:)
  • :p 是的,如果他想使用我们都说过的服务器端转换,他应该转换 URL。但是使用和 iFrame,将不需要任何这些。这就是为什么我说这是简单的方法。就像我说的,我并不是说 iFrame 是最好的解决方案,但它是最简单的解决方案。你不同意吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-26
  • 2010-11-02
  • 2011-12-21
  • 2023-02-02
相关资源
最近更新 更多