我正在尝试将子域名从"新闻.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"子域。希望对大家有所帮助。