Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.07.2022, 02:10
Новичок на форуме
Отправить личное сообщение для dimpat Посмотреть профиль Найти все сообщения от dimpat
 
Регистрация: 23.07.2022
Сообщений: 3

Как реализовать простой код для перенаправения
Доброго времени суток. Подскажите как реализовать простой код для для перенаправения.
Есть двуязычный сайт "site.com/" и "site.com/en", нужно при первом посещении сайта (нет записи в куках) строго по адресу "site.com/" автоматическое перенаправление на "site.com/en". При всех последующих посещениях "site.com/" или при первом посещении по другим ссылкам типа "site.com/index.php?id=170" или "site.com/en" итд ни чего не перенаправляет.
Подскажите пожалуйста как сделать ?
Заранее благодарю за ответ.
Ответить с цитированием
  #2 (permalink)  
Старый 29.07.2022, 03:01
Новичок на форуме
Отправить личное сообщение для dimpat Посмотреть профиль Найти все сообщения от dimpat
 
Регистрация: 23.07.2022
Сообщений: 3

Ладно, отвечу сам себе, возможно новичкам будет полезно.
Для начала реализовали куки для контроля сессии
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 "";
    }   
	});

Последний раз редактировалось dimpat, 29.07.2022 в 03:07.
Ответить с цитированием
  #3 (permalink)  
Старый 29.07.2022, 03:06
Новичок на форуме
Отправить личное сообщение для dimpat Посмотреть профиль Найти все сообщения от dimpat
 
Регистрация: 23.07.2022
Сообщений: 3

Но в моем случае на сайт нужно было вставить согласно европейской директиве уведомление о наличие куков и принятии политики конфиденциальности.
Скрипт брал стандартный, их много в тырнетах, в нем тоже есть запись о куках, по этому решил не городить два скрипта а все повесить в один.
// куки
$(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();  
  });
} 


});
Ответить с цитированием
  #4 (permalink)  
Старый 29.07.2022, 07:39
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

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";
            }
        });
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двумерные массивы для анимации на Phaser, как организовать? Wimko Библиотеки/Тулкиты/Фреймворки 1 26.10.2019 20:22
Как реализовать Service worker для дополнения контента перед первой загрузкой страниц Adamabakumov Javascript под браузер 1 02.09.2019 14:22
initComponent: Как получить данные родителя и как получить store для вызова load()? Пролетарий ExtJS 76 04.07.2015 09:22
PopUp как выполнить код один раз для сессии kznsky Events/DOM/Window 5 03.03.2015 13:48
поиск классов внутри тега yozuul jQuery 24 14.06.2013 22:00