很抱歉我原来的问题不清楚,希望通过重新措辞,我可以更好地解释我想做什么。
因此我需要一种方法来使用JavaScript(或jQuery)来执行以下操作:
即。如果用户正在访问www.domain2.com/index,那么:
<a href="www.domain1.com/contentpages/page.html">Test 1</a>
应该在加载时动态重写
<a href="www.domain2.com/contentpages/page.html">Test 1</a>
是否甚至可以仅重写href
代码中的部分网址?
答案 0 :(得分:7)
您的代码将遍历页面上的所有链接。这是一个只迭代需要替换的URL的版本。
var linkRewriter = function(a, b) {
$('a[href*="' + a + '"]').each(function() {
$(this).attr('href', $(this).attr('href').replace(a, b));
});
};
linkRewriter('originalDomain.com', 'rewrittenDomain.com');
答案 1 :(得分:1)
我想出了如何使这项工作。
<script type="text/javascript">
// link rewriter
$(document).ready (
function link_rewriter(){
var hostadd = location.host;
var vendor = '999.99.999.9';
var localaccess = 'somesite1.';
if (hostadd == vendor) {
$("a").each(function(){
var o = $(this);
var href = o.attr('href');
var newhref;
newhref = href.replace(/somesite1/i, "999.99.999.99");
o.attr('href',newhref);
});
}
}
);
</script>
答案 2 :(得分:0)
您需要使用Java或服务器端来获取IP地址。见:
答案 3 :(得分:0)
此示例将使用 my-domain.com
到 my-other-domain
(两者都是变量)替换所有网址。
您可以通过在原始字符串模板中组合字符串值和其他正则表达式来执行动态正则表达式。使用 String.raw
将防止 javascript 转义字符串值中的任何字符。
// Strings with some data
const domainStr = 'my-domain.com'
const newDomain = 'my-other-domain.com'
// Make sure your string is regex friendly
// This will replace dots for '\'.
const regexUrl = /\./gm;
const substr = `\\\.`;
const domain = domainStr.replace(regexUrl, substr);
// domain is a regex friendly string: 'my-domain\.com'
console.log('Regex expresion for domain', domain)
// HERE!!! You can 'assemble a complex regex using string pieces.
const re = new RegExp( String.raw `([\'|\"]https:\/\/)(${domain})(\S+[\'|\"])`, 'gm');
// now I'll use the regex expression groups to replace the domain
const domainSubst = `$1${newDomain}$3`;
// const page contains all the html text
const result = page.replace(re, domainSubst);
<块引用>
注意:不要忘记使用 regex101.com 来创建、测试和导出 REGEX 代码。