Edited at

jQueryにてリンク先のドメインを一括置換

More than 1 year has passed since last update.

htmlのaタグ内に設定された特定のドメイン部分のみを、

開発サーバなど別環境に設置されている時にはその時のドメインに後から置換する、という処理を要求されたので

locationやreplaceやRegExpオブジェクトを総動員して実装しました。

$(window).load(function() {

var tgtDomain = 'https://www.sample.jp'; //置換対象のドメインを設定
var nowDomain = $(location).attr('protocol') + '//' + $(location).attr('host');
if (tgtDomain) { //tgtDomainの入力の有無を判定
if (tgtDomain != nowDomain) { //現在ドメインと対象ドメインの不一致を判定
$('a[href^="'+ tgtDomain + '"]').each(function() {
var replace = null;
var replace = $(this).attr('href').replace(new RegExp(tgtDomain, 'g'), nowDomain);
$(this).attr('href',replace);
});
}
}
});

tgtDomainnowDomain を逆にしても使えるかも。


参考サイト



相対パスリンクに現在のドメインを挿入(2018/06/15追記)

上記を改変し、相対パスで書かれたリンクの前に現在のドメインを挿入する処理を実装しました。

開発サーバなどのディレクトリ構成が本番サーバと異なる場合などに使えます。

$(window).load(function() {

var nowDomain = $(location).attr('protocol') + '//' + $(location).attr('host');
$('.wysiwyg a[href^="/"]').each(function() {
var replace = null;
replace = $(this).attr('href');
if (replace.match(/^\/[^\/]/)){
replace = nowDomain + replace;
$(this).attr('href',replace);
}
});
});