Как реализовать простой код для перенаправения
Доброго времени суток. Подскажите как реализовать простой код для для перенаправения.
Есть двуязычный сайт "site.com/" и "site.com/en", нужно при первом посещении сайта (нет записи в куках) строго по адресу "site.com/" автоматическое перенаправление на "site.com/en". При всех последующих посещениях "site.com/" или при первом посещении по другим ссылкам типа "site.com/index.php?id=170" или "site.com/en" итд ни чего не перенаправляет. Подскажите пожалуйста как сделать ? Заранее благодарю за ответ. |
Ладно, отвечу сам себе, возможно новичкам будет полезно.
Для начала реализовали куки для контроля сессии function getCookie(cname) { var name = cname + "="; var ca = document.cookie.split(';'); for(var i = 0; i <ca.length; i++) { var c = ca[i]; while (c.charAt(0)==' ') { c = c.substring(1); } if (c.indexOf(name) == 0) { return c.substring(name.length,c.length); } } return ""; } Потом написали скрипт который указывает что срабатывание идет только при заходе на главную. var a = window.location.pathname; if ((a === "/") && getCookie("first_visit") != "true" ) { document.cookie = "first_visit=true"; location.href="/en"; } теперь объединили в одну функцию // языковый одиночный редирект с главной $(document).ready(function($){ var a = window.location.pathname; if ((a === "/") && getCookie("first_visit") != "true" ) { document.cookie = "first_visit=true"; location.href="/en"; } function getCookie(cname) { var name = cname + "="; var ca = document.cookie.split(';'); for(var i = 0; i <ca.length; i++) { var c = ca[i]; while (c.charAt(0)==' ') { c = c.substring(1); } if (c.indexOf(name) == 0) { return c.substring(name.length,c.length); } } return ""; } }); |
Но в моем случае на сайт нужно было вставить согласно европейской директиве уведомление о наличие куков и принятии политики конфиденциальности.
Скрипт брал стандартный, их много в тырнетах, в нем тоже есть запись о куках, по этому решил не городить два скрипта а все повесить в один. // куки $(document).ready(function($){ function getCookie(name) { let matches = document.cookie.match(new RegExp( "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)" )); return matches ? decodeURIComponent(matches[1]) : undefined; } let cookiecook = getCookie("cookiecook"), cookiewin = document.getElementsByClassName('ispolzuyet_fayly_kuki')[0]; var a = window.location.pathname; if ((a === "/") && cookiecook != "no") { location.href="/en"; } if (cookiecook != "no") { // показываем cookiewin.style.display="block"; // закрываем по клику document.getElementById("cookie_close").addEventListener("click", function(){ cookiewin.style.display="none"; let date = new Date; date.setDate(date.getDate() + 364); // 364 - количество дней хранения document.cookie = "cookiecook=no; path=/; expires=" + date.toUTCString(); }); } }); |
dimpat,
document.addEventListener("DOMContentLoaded", function() { let path = window.location.pathname, first_visit = localStorage.getItem("first_visit"); if ((path === "/") && !first_visit) { localStorage.setItem("first_visit", "abracadabra"); location.href = "/en"; } }); |
Часовой пояс GMT +3, время: 05:47. |