Как реализовать простой код для перенаправения
Доброго времени суток. Подскажите как реализовать простой код для для перенаправения.
Есть двуязычный сайт "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, время: 21:44. |