使用JavaScript将子域名替换为其他子域名

Replace subdomain name with other subdomain Using JavaScript?

本文关键字:域名 其他 替换 JavaScript 使用      更新时间:2023-09-26

我正在尝试将子域名从"新闻.domain.com/path/.."替换为"移动.domain.com/path/..",使用JavaScript

知道如何实现这一点吗?

我假设您想将通用格式xxxx.domain.com/...中的字符串更改为mobile.domain.com/...。这个正则表达式应该在JavaScript中完成:

var oldPath = "news.domain.com/path/";
var newPath = oldPath.replace(/^[^.]*/, 'mobile')

这应该在正常情况下工作:

"http://news.domain.com/path/..".replace(/(:'/'/'w+'.)/, "://mobile.")

使用以下命令添加额外的验证级别:

function replaceSubdomain(url, toSubdomain) {
    const replace = "://" + toSubdomain + ".";
    // Prepend http://
    if (!/^'w*:'/'//.test(url)) {
        url = "http://" + url;
    }
    // Check if we got a subdomain in url
    if (url.match(/'.'w*'b/g).length > 1) {
        return url.replace(/(:'/'/'w+'.)/, replace)
    }
    return url.replace(/:'/'/('w*'.)/, `${replace}$1`)
}
console.log(replaceSubdomain("example.com", "mobile"));
console.log(replaceSubdomain("http://example.com:4000", "mobile"));
console.log(replaceSubdomain("www.example.com:4000", "mobile"));
console.log(replaceSubdomain("https://www.example.com", "mobile"));
console.log(replaceSubdomain("sub.example.com", "mobile"));

如果你想通过JS发送用户到新的url -使用document.location = "mobile.domain.com/path/.."

参考FixMaker对他的回答的评论:

window.location。href会给你一个完全限定的URL(例如http://news.domain.com/path)。在运行上面的代码

时,需要考虑到http://前缀

处理请求方案(http/https)的合适正则表达式如下:

function replaceSubdomain(url, subdomain){
    return url.replace(/^(https?:'/'/)(www'.)?([^.])*/, `$1$2${subdomain}`);
}
let url1 = 'https://sub-bar.main.com';
let url2 = 'https://www.sub-bar.main.com';
console.log(replaceSubdomain(url1, 'foobar'));
console.log(replaceSubdomain(url2, 'foobar'));

不能替换子域。您可以使用javascript重定向。

<script type="text/javascript">
<!--
window.location = "http://mobile.domain.com/path/to/file.html"
//-->
</script>

我尝试使用java脚本,但没有运气,对于我的情况,我使用下面的代码在。httaccess文件

RewriteCond %{HTTP_USER_AGENT} "iphone|ipod|android" [NC]
RewriteCond %{HTTP_HOST} !^mobile.domain.com
RewriteRule ^(.*)$ http://mobile.domain.com/ [L,R=302]

将"news"子域替换为"mobile"子域。希望对大家有所帮助。