Перенаправление на соответствующую страницу настольной / мобильной версии с использованием Javascript - PullRequest
2 голосов
/ 29 марта 2019

У меня разные доменные имена для мобильных (http://m.mydomain.com) и настольных компьютеров (http://web.mydomain.com)) пользователей. В настоящее время я использую следующий код Javascript для перенаправления пользователей моего настольного компьютера, обращающихся к мобильным URL-адресам, на настольные URL-адреса.

<script>
var isDesktop = {
    Windows: function() {
        return navigator.platform.match('Win32|Win16|Win64|WinCE|Windows');
    },
    Mac: function() {
        return navigator.platform.match('MacIntel|Macintosh|MacPPC|Mac68K');
    },
    any: function() {
        return (isDesktop.Windows() || isDesktop.Mac());
    }
};
		
	if (isDesktop.any()){
		window.location='http://web.mydomain.com';
	}
</script>

Но проблема в следующем: пользователь перенаправляется на главную страницу (http://web.mydomain.com) независимо от того, на какой странице он находится. Я хочу перенаправить его насоответствующей страницы. Например, если пользователь настольного компьютера получает доступ к мобильной странице http://m.mydomain.com/a-page,, он автоматически перенаправляется на настольную версию этой страницы http://web.mydomain.com/a-page.

Я не могу использовать .htaccess, потому что мой веб-сервер это Nginx.

1 Ответ

0 голосов
/ 29 марта 2019

Если вы поддерживаете только современные браузеры, URL API позволяет вам извлечь имя пути из URL. Обратитесь к приведенному ниже примеру, который преобразует мобильный URL-адрес в веб-URL.

// Base URLs for mobile and web based sites.
var mobileBaseUrl = "http://m.mydomain.com";
var webBaseUrl = "http://web.mydomain.com";

// The actual page URL
var loc = "http://m.mydomain.com/what/ever/the/url";
var url = new URL(loc);

// Converted location
var result = `${webBaseUrl}${url.pathname}`;
console.log(result);
...