【问题标题】:Achieving url redirection from a html to aspx page by querying the url parameters通过查询url参数实现从html到aspx页面的url重定向
【发布时间】:2012-10-19 11:13:42
【问题描述】:

这会很长。

我有一个要求,我必须在我的旧网页中使用 url 重定向(基本上它是一个完整的静态 html 页面)。

对我的要求是每次都重定向用户,从静态html页面到.aspx页面

即如果我之前的页面被发现在

http://web.vatsag.com/app/en/downloadsite.htm

然后我必须重定向到以下页面(.aspx)

http://web.vatsag.com/app/newdownloadsite.aspx

目前我在我的 html 页面中使用 javascript,

即

window.location="http://web.vatsag.com/app/newdownloadsite.aspx"

我的 downloadsite.htm 页面的 head 部分中的脚本

问题来了

如何查询多个网址参数?

即 当 URL 请求类似于

http://web.vatsag.com/app/en/downloadsite.htm?lang=de&vers=1.10

我应该被重定向到具有相同 URL 参数的 aspx 页面。

http://web.vatsag.com/app/newdownloadsite.aspx?lang=de&vers=1.10

我有一个 javascript sn-p,它返回我的 url 参数

function getQueryStringArray(){
    var assoc=[]; 
    var items = window.location.search.substring(1).split('&'); 
    for(var j = 0; j < items.length; j++) { 
       var a = items[j].split('='); assoc[a[0]] = a[1]; 
    }
    return assoc;
}

我如何使用这个 sn-p 来获取所有 URL 参数以最终重定向到 ASPX 网页?

非常感谢您的帮助

VATSAG

【问题讨论】:

  • 您是否想过直接路由到 .aspx 页面而不是重定向? Scott Guthrie 有一篇博文:weblogs.asp.net/scottgu/archive/2007/02/26/…
  • 使用服务器执行上面建议的 url-rewrite 更好 imo。您不必将 javascript 放入所有旧页面,客户端也不必先加载旧页面。

标签: javascript asp.net html url-redirection


【解决方案1】:

我认为这段代码会给你你所追求的 URL

// Original URL
var url = window.location.href; 
var newUrl = "";

// Split the String to get the Query strings
var splitString = url.split('?');


if (splitString.length > 1)
{
   // New Url With Query strings
   newUrl = "http://web.vatsag.com/app/newdownloadsite.aspx" + "?" + splitString[1];
}
else
{
   // New Url With NO query string
   newUrl = "http://web.vatsag.com/app/newdownloadsite.aspx"
}

【讨论】:

  • 谢谢...这真的很简洁:)
【解决方案2】:

您的任务可以通过在旧页面上使用简单的元标记轻松完成,该标记可以重定向到新页面。

将以下行添加到旧静态 html 页面的 head 部分:

<meta http-equiv="Refresh" content="0;URL=new_page_url" />

【讨论】:

  • 如果他想查询querystring中的URL参数,这将不起作用。
【解决方案3】:

window.location 不是一个字符串,它是一个结构/类。它有自己的成员变量。当您分配 location="something" 时,您分配给 href 成员。您可以查看它的其他成员。

另外,另一个注意事项:不建议指定像http://web.vatsag.com/app/newdownloadsite.aspx 这样的完整地址。相反,请使用../newdownloadsite.aspx。这将有助于您将来重新定位您的网站。

要回答您的问题,请尝试:

  location=location.pathname.replace(/en\/downloadsite.htm$/,"newdownloadsite.aspx") + location.search + location.hash;
  //Host name, protocol, port number is taken from current one. (Making it more portable)
  //By using pathname.replace, you ensure that if the directory path depth of the original html page on server is changed, still it would be portable.

顺便说一句,MVCKarl 的回答 - .split("?")[1] - 也应该代替 location.search + location.hash。

【讨论】:

    猜你喜欢
    • 2012-10-15
    • 1970-01-01
    • 2015-04-17
    • 1970-01-01
    • 2020-08-03
    • 1970-01-01
    • 2019-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多