6

我正在尝试使用 JavaScript将子域名从“ news.domain.com/path/ ..”替换为“ mobile.domain.com/path/ ..”

知道如何实现这一目标吗?

4

6 回答 6

6

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

var oldPath = "news.domain.com/path/";
var newPath = oldPath.replace(/^[^.]*/, 'mobile')
于 2013-04-18T14:17:12.987 回答
3

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

"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"));

于 2019-02-16T11:32:38.287 回答
-1

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

于 2013-04-18T14:10:07.147 回答
-1

关于 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'));

于 2018-02-16T16:05:25.917 回答
-3

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

<script type="text/javascript">
<!--
window.location = "http://mobile.domain.com/path/to/file.html"
//-->
</script>
于 2013-04-18T14:10:19.037 回答
-3

我尝试使用 java 脚本但没有运气,就我而言,我在 .httaccess 文件中使用以下代码

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

它将“新闻”子域替换为“移动”子域。希望它会帮助任何人。

于 2013-04-24T07:17:35.620 回答