0

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

我不想手动更改所有链接,而是只希望网站的一个版本具有如下所示的链接:

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

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

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

4

4 回答 4

1

您可以尝试点击:

<a href="foo.{host}/mypage?myparam=value"
   onclick="this.href=this.href.replace('{host}', window.location.hostname)">Link</a>
于 2012-06-28T17:04:45.190 回答
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”。

于 2012-06-28T17:01:18.383 回答
0

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

于 2012-06-28T17:01:23.740 回答
0

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

<a href="#" onclick="javascript:window.location.href = 'foo.' + window.location.hostname + '/mypage?myparam=value';">Link</a>
于 2012-06-28T17:10:07.723 回答