我们的网站包含指向各个子域的href链接:foo.mysite.com,bar.mysite.com。出于测试目的,我想在完全不同的主域名上运行该站点,并指向新域名下的子域名。
我不想手动更改所有链接,而是希望只有一个版本的网站链接看起来像这样:
<a href="foo.(window.location.hostname)/mypage?myparam=value">Link</a>
这样做最简单的语法是什么?
我知道我可以编写jQuery代码来劫持链接,但更简单的in-link语法会更好。
答案 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>