код редиректа клонов url, получение url после знака #

romas_s

Гуру форума
Регистрация
9 Ноя 2012
Сообщения
256
Реакции
83
Код для редиректа клонов url, помогите получить код ссылки после символа #
все бы то ничего, но редирект страничек с приставкой # в конце не работает.
$find_klon_url = $_SERVER [HTTP_HOST].$_SERVER[REQUEST_URI]; выдает url c обрезанной приставкой # и далее любой текст.

как получить часть ссылки #kakoytotekts ?

данный код используется на Joomla 3.5 в файле шаблона + компонент JbZoo
Но данный код пожалую подойдет для любой CMS, достаточно только подставить свои правила редиректа.

может кто подскажет как получить значение переменной canonical ? а если точнее, то url canonical выводимый в шаблоне?
зная как получить значение переменной canonical - код можно сократить в разы. сам не смог разобраться как получить значение переменной canonical который выводится в шаблоне Joomla 3.5.
 
Последнее редактирование:
Модераторы не судите строго, это мой первый пост, заранее приношу извинения если опубликовал пост в не самом подходящем разделе форума.

Rод для редиректа клонов url, помогите получить код ссылки после символа #
все бы то ничего, но редирект страничек с приставкой # в конце не работает.
$find_klon_url = $_SERVER [HTTP_HOST].$_SERVER[REQUEST_URI]; выдает url c обрезанной приставкой # и далее любой текст.

как получить часть ссылки #kakoytotekts ?

данный код используется на Joomla 3.5 в файле шаблона + компонент JbZoo
Но данный код пожалую подойдет для любой CMS, достаточно только подставить свои правила редиректа.
PHP:
<?php

    $find_klon_url = $_SERVER [HTTP_HOST].$_SERVER[REQUEST_URI]; // текущий url
    //print_r ($find_klon_url); // для проверки
  
    // ########################
    // редирект материалов без категории
    //  домен
    // [a-z0-9-]+ - цифры и буквы повторяющиеся 1+ раз
    // ([a-z0-9-]+)\.  -//-// цикл - повторение символов до первого символа .
    // (([a-z0-9-]+)\.)+ цикл выше описанного, пока не закончатся .
    // [a-z0-9]+ - последняя доменная зона без .
    // [\/] - / в конце домена сайта
    $reg = "/^(([a-z0-9-]+)\.)+[a-z0-9]+[\/]item/i"; // домен + /item
    if ( preg_match ($reg, "$find_klon_url") ) // проверка регулярного выражения
    {
        //echo preg_match ($reg, "$find_klon_url") . "<br>";
        //echo "текущий url <br>" . ($find_klon_url) . "<br><br>";
        $new_url = 'https://'.$_SERVER [HTTP_HOST] . '/games/item' . preg_replace($reg, "" , $find_klon_url);
        //echo "новый измененный url <br>" .($new_url) . "<br><br>";
        header("Location: $new_url"); // редирект на правильную страничку
        exit;
    }
        // ########################
    // редирект категорий которые не находятся в категории games
    $reg = "/^(([a-z0-9-]+)\.)+[a-z0-9]+[\/]category/i"; // домен + /category
    if ( preg_match ($reg, "$find_klon_url") ) // проверка регулярного выражения
    {
        //echo preg_match ($reg, "$find_klon_url") . "<br>";
        //echo "текущий url <br>" . ($find_klon_url) . "<br><br>";
        $new_url = 'https://'.$_SERVER [HTTP_HOST] . '/games/category' . preg_replace($reg, "" , $find_klon_url);
        //echo "новый измененный url <br>" .($new_url) . "<br><br>";
        header("Location: $new_url"); // редирект на правильную страничку
        exit;
    }
    // ########################
    // редирект idex.php на корень сайта
        $reg = "/^(([a-z0-9-]+)\.)+[a-z0-9]+[\/]index.php/i"; // домен + /index.php
    if ( preg_match ($reg, "$find_klon_url") ) // проверка регулярного выражения
    {
        //echo preg_match ($reg, "$find_klon_url") . "<br>";
        //echo "текущий url <br>" . ($find_klon_url) . "<br><br>";
        $new_url = 'https://'.$_SERVER [HTTP_HOST];
        //echo "новый измененный url <br>" .($new_url) . "<br><br>";
        header("Location: $new_url"); // редирект на правильную страничку
        exit;
    }
    // ########################
    // редирект лишнего / в конце url
    $domen = $_SERVER [HTTP_HOST] . "/";
    $reg = "/\/$/i"; // редирект страничек с лишним / в конце url
    if ( preg_match ($reg, "$find_klon_url") && $find_klon_url != $domen)
    {
        //echo preg_match ($reg, "$find_klon_url") . "<br>";
        //echo "текущий url <br>" . ($find_klon_url) . "<br><br>";
        $new_url = 'https://' . preg_replace($reg, "" , $find_klon_url);
        //echo "новый измененный url <br>" .($new_url) . "<br><br>";
        header("Location: $new_url"); // редирект на правильную страничку
        exit;
    }
    // ########################
    // редирект статьи которая находится одновременно в нескольких категориях
    $reg = "/\?category_id=[0-9]+/i"; // удаляем с url идентификатор дополнительной категории
    if ( preg_match ($reg, "$find_klon_url") )
    {
        //echo preg_match ($reg, "$find_klon_url") . "<br>";
        //echo "текущий url <br>" . ($find_klon_url) . "<br><br>";
        $new_url = 'https://' . preg_replace($reg, "" , $find_klon_url);
        //echo "новый измененный url <br>" .($new_url) . "<br><br>";
        header("Location: $new_url"); // редирект на правильную страничку
        exit;
    }
    // ########################
    // поиск запрещенных символов в url и редирект на главную страницу
    if ( strripos($find_klon_url, 'contushdvideoshare') !=0 || strripos($find_klon_url, '?category_id') !=0)
    {}
    else if (strripos($find_klon_url, '&') >0
          OR strripos($find_klon_url, '?') >0  
          OR strripos($find_klon_url, '//') >0
        //OR strripos($find_klon_url, '#') >0 // не работает, поскольку получаемый url без #
          OR strripos($find_klon_url, 'component') !=0
            )
    {
        $new_url = 'https://' . $_SERVER [HTTP_HOST];
        header("$new_url"); // редирект на главную страничку
        exit;
    }
?>

может кто подскажет как получить значение переменной canonical ? а если точнее, то url canonical выводимый в шаблоне?
зная как получить значение переменной canonical - код можно сократить в разы. сам не смог разобраться как получить значение переменной canonical который выводится в шаблоне Joomla 3.5.
всё что после # нельзя получить web сервером. Только javascript и через ajax отправлять на обработку.
 
всё что после # нельзя получить web сервером. Только javascript и через ajax отправлять на обработку.
в идеале обработку редиректов оставить в PHP а url получать через javascript

можете хоть подсказать в сторону каких функций копать?
 
ну в php Для просмотра ссылки Войди или Зарегистрируйся.
Если не прокатит то через js:
Код:
    $("a").cick(function(){
      // пост нужен потому, что гет и не передает все что после решетки.
      $.post("тут адрес отправки",{url:$(this).attr("href")},function(a){alert(a);});
      return false;
      });
Этот код навешивает на ссылку событие, которое при клике копирует href ссылки и отправляет его на заданный адрес,где его уже через php в post массиве можно получить и рапарсить, распарсить можно и прям в js а потом отправлять.
 
Назад
Сверху