修改链接中URL的最简单方法是什么?

时间:2012-06-28 16:52:32

标签: javascript jquery html

我们的网站包含指向各个子域的href链接:foo.mysite.com,bar.mysite.com。出于测试目的,我想在完全不同的主域名上运行该站点,并指向新域名下的子域名。

我不想手动更改所有链接,而是希望只有一个版本的网站链接看起来像这样:

<a href="foo.(window.location.hostname)/mypage?myparam=value">Link</a>

这样做最简单的语法是什么?

我知道我可以编写jQuery代码来劫持链接,但更简单的in-link语法会更好。

4 个答案:

答案 0 :(得分:1)

您可以尝试点击:

<a href="foo.{host}/mypage?myparam=value"
   onclick="this.href=this.href.replace('{host}', window.location.hostname)">Link</a>

答案 1 :(得分:0)

我见过后端系统使用ENV变量在生产环境之间进行更改。例如,您可以设置环境变量,例如var ENV = 'live'var ENV = 'production。然后,您可以使用它来定义要使用的子域。

var ENV = 'production';

// set subdomain based on ENV variable
var subdomain = 'bar';
if(ENV == 'production'){
   var subdomain = 'foo';
}

// modify every link to use the subdomain
$('a').each(function(){
  var modifyHref = 'http://' + subdomain + $(this).attr('href')
  $(this).attr('href', modifyHref);
});

我认为你不应该在前端JS上这样做。

如果子域名存在问题,我会将所有路径设置为<a href="/mypage?myaparam=value">。这样,子域名无关紧要。如果您在foo子域中,它将转到“foo.whatever / mypage?myaparam = value”,如果您在bar子域中,它将转到“bar.whatever / mypage?myaparam = value”。< / p>

答案 2 :(得分:0)

老实说,这种简单的全球测试变更的简单方法是在整个网站上进行搜索/替换。如果你想继续你的计划,我会使用服务器端语言,如PHP,如果可能的话。对于你想要的东西,它会更加万无一失。

答案 3 :(得分:0)

你不能使用javascripts onclick事件吗?这样做:

<a href="#" onclick="javascript:window.location.href = 'foo.' + window.location.hostname + '/mypage?myparam=value';">Link</a>