使用Javascript基于URL参数重定向到特定网页

时间:2012-08-06 07:00:46

标签: javascript html url url-rewriting

我有一个简单的.htm网页,保存在不同的文件夹中,用于处理不同的语言。

default.htm在en文件夹中( en \ default.htm de \ default.htm 等等)

我需要根据URL参数重定向到特定的网页,即如果用户有

指定http://localhost/website/default.htm?lang=de,我需要将他重定向到

de \ default.htm 文件。即德国网页。

如果是ASPX页面,我可以使用ResourceManager轻松完成这项工作

以及使用.NET提供的 Request.QueryString 选项的相应.resx文件

BCL。但是,由于我使用纯HTML页面,我没有专业知识来编写客户端

像javascript这样的边脚本来查询URL参数并将用户重定向到

必填页。

问题:

任何人都可以指导我如何使用任何形式的客户端脚本来实现相同的目标

实现重定向?我在哪里调用脚本函数?

即查询每个帖子事件的参数。??

非常感谢

3 个答案:

答案 0 :(得分:3)

您可以使用javascript轻松获取params列表,并使用以下行。

var paramArray = window.location.search.substring(1).split("&")

这将构建查询字符串的参数数组。从那里你只需要添加逻辑来查找你在问题中指定的参数,并使用

进行适当的重定向

window.location.href = 'some URL'; //causes the browser to refresh with the new 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;
}

//point at which you want to determine redirection
var qs = getQueryStringArray();
var url = '';
if (qs.lang !== 'undefined' && qs.lang) {
   switch (qs.lang) {
      case 'en':
         url = 'blah';
         break;
      case 'de': 
         url = 'meh';
         break;
   }
   window.location.href = url; //reroute
 }

答案 1 :(得分:2)

请参阅有关如何使用jQuery How can I get query string values in JavaScript?

解析查询字符串参数的信息

然后您可以使用window.location重定向到另一个页面

像这样的东西

<script>
    $(document).ready(function(){
   var p = getParameterByName("lang");
   var rootUrl = "yourRootUrl";
    var url = rootUrl + p + '/default.htm';
   window.location = url;
});
</script>

没有jQuery

<script>
     (function(){
          var p = getParameterByName("lang");
          var rootUrl = "yourRootUrl/";
          var url = rootUrl + p + '/default.htm';
          window.location = url;
     }());
</script>

答案 2 :(得分:0)

以下内容应该为您完成。只需将其包装在<script></script>标签中即可。

// Locate "lang=...." in the url using regex;
var a = /[\?&]lang=([^\/&#\?]+)/i.exec(window.location.pathname);
// check if the regex matched
if (a) {
    // If so, redirect the user
    window.location.href = "http://localhost/website/" + a[1] + "/index.htm";
}

这将使您不必循环访问网址,但它确实需要基本了解regexp的工作原理。