我正在尝试使用 JavaScript将子域名从“ news.domain.com/path/ ..”替换为“ mobile.domain.com/path/ ..”
知道如何实现这一目标吗?
我正在尝试使用 JavaScript将子域名从“ news.domain.com/path/ ..”替换为“ mobile.domain.com/path/ ..”
知道如何实现这一目标吗?
我假设您要将通用格式的字符串更改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]
它将“新闻”子域替换为“移动”子域。希望它会帮助任何人。