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

使用JavaScript将子域名替换为其他子域名?,javascript,string,replace,Javascript,String,Replace,我正在尝试使用JavaScript将子域名从“news.domain.com/path/”替换为“mobile.domain.com/path/” 你知道如何实现吗?如果你想通过JS将用户发送到新的url-使用document.location=“mobile.domain.com/path/。”你不能替换子域。您可以使用javascript重定向 <script type="text/javascript"> <!-- window.location = "http://mo

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


你知道如何实现吗?

如果你想通过JS将用户发送到新的url-使用
document.location=“mobile.domain.com/path/。”
你不能替换子域。您可以使用javascript重定向

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

我假设您希望将通用格式的字符串
xxxx.domain.com/…
更改为
mobile.domain.com/…
。此regexp应在JavaScript中完成此操作:

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

我尝试使用java脚本,但运气不好,我在.httaccess文件中使用了下面的代码

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

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

关于FixMaker对他的评论:

window.location.href将为您提供完全限定的URL(例如)。在运行上述代码时,需要考虑http://前缀

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

函数替换子域(url,子域){
返回url.replace(/^(https?:\/\/)(www\)([^.])*/,`1$2${subdomain}`);
}
让url1=https://sub-bar.main.com';
让url2为您服务https://www.sub-bar.main.com';
log(replaceSubdomain(url1,'foobar');
log(replaceSubdomain(url2,'foobar')这在正常情况下应该有效:

使用以下内容添加额外级别的验证:

函数替换子域(url,toSubdomain){
const replace=“:/”+toSubdomain+”;
//前置http://
如果(!/^\w*:\/\/.test(url)){
url=“http://”+url;
}
//检查url中是否有子域
if(url.match(/\.\w*\b/g).length>1){
返回url.replace(/(:\/\/\w+\)/,replace)
}
返回url.replace(/:\/\/(\w*\.)/,`${replace}$1`)
}
log(replaceSubdomain(“example.com”、“mobile”);
console.log(替换子域(“http://example.com:4000","流动电话"),;
log(replaceSubdomain(“www.example.com:4000”,“mobile”);
console.log(替换子域(“https://www.example.com","流动电话"),;

log(replaceSubdomain(“sub.example.com”,“mobile”)
我知道要重定向域,我想在URL中将单词news改为mobile,正如其他人暗示的那样,你能更清楚地了解一下想要实现什么:你想将用户的浏览器重定向到新的URL吗,或者您只是想知道如何将第一个字符串转换为第二个字符串?我想在url中替换子域名news,而不是mobile,这样它会显示页面的移动版本。如何获取当前路径(旧路径),因为url是dynamici,尝试使用此var oldPath=window.location.href;var newPath=oldPath.replace(/^[^.]*/,'mobile');document.location=newPath;但是运气不好。@Bala,
window.location.href
将为您提供一个完全限定的URL(例如
http://news.domain.com/path
)。运行上述代码时,您需要考虑
http://
前缀。当问题明确要求JavaScript解决方案时,这怎么可能是正确的。@moefinley至少当时我已经实现了这个方法,所以它对我帮助很大
"http://news.domain.com/path/..".replace(/(:\/\/\w+\.)/, "://mobile.")