Помогите составить регулярное выражение для перенаправления

Тема в разделе "Регулярные выражения", создана пользователем BIZON, 22 окт 2017.

Модераторы: xpert13
  1. BIZON

    BIZON Перезагрузка...

    Moderator
    • Супермодератор
    Регистр.:
    31 окт 2006
    Сообщения:
    584
    Симпатии:
    1.571
    В общем нужно реализовать редирект 301.

    Что имеем.

    очень много ссылок вида:
    Код:
    http://www.site.ru/v_goods_info/?brand=GENERAL+MOTORS&number=13307668
    http://www.site.ru/v_goods_info/?brand=Fiat/Alfa/Lancia&number=156017493
    http://www.site.ru/v_goods_info/?brand=Blue+Print&number=ADN12132
    необходимо, что бы все ссылки перенаправлялись на страницу, где вместо /v_goods_info/ , используется /goods_info/

    Маленький хелп...
    Примеры регулярных выражений:

    Пример 1. Необходимо перенаправить все обращения с адреса avto-magazin.ru/shop/fluids/antifriz
    Регулярное выражение: #avto-magazin\.ru/shop/fluids/antifriz#
    Пример 2: Необходимо перенаправить все обращения с адресов с произвольным названием сайта и с любым из доменов ru, com, org, pro из папки /shop/fluids/antifriz (независимо от регистра)
    Регулярное выражение: #([a-z0-9-]+)\.(ru|com|org|pro)/shop/fluids/antifriz#i
    Пример 3: Необходимо перенаправить обращения со всех адресов, в которых присутствует строка "/shop/fluids/antifriz"
    Регулярное выражение: #/shop/fluids/antifriz#
    Для проверки регулярного выражения воспользуйтесь сервисом

    пс
    чот у меня нихрена не получается(
     
  2. cocs

    cocs

    Регистр.:
    5 дек 2009
    Сообщения:
    514
    Симпатии:
    212
    Выгрузи все ссылки в текстовой файл и сделай замену (Ctrl+h) C v_goods_info на goods_info
     
    BIZON нравится это.
  3. gradar

    gradar Постоялец

    Регистр.:
    15 авг 2015
    Сообщения:
    120
    Симпатии:
    71
    Что-то вроде:
    ^/v_goods_info/(.+)
    /goods_info/$1
     
    bobov1 нравится это.
  4. BIZON

    BIZON Перезагрузка...

    Moderator
    • Супермодератор
    Регистр.:
    31 окт 2006
    Сообщения:
    584
    Симпатии:
    1.571
    Спасибо дорогой.)) :) Но не вариант, потому что сайт на платформе, выгружать все ссылки смысла нет...

    Просто Я отключил одну услугу, и теперь они перенаправляют некоторые наши переходы с Яндекса, на 4mycar.. Сейчас сделал редирект на главную, но хотелось бы что бы были переходы именно на страницы которые в поиске.. Но, скорей всего, для второго поля ввода данных, не предусмотрены регулярные выражения...
    <-------------- добавлено через 1235 сек. -------------->
    Спс, но нет..

    Рег выражение которое срабатывает для перенаправления #\/v_goods_info(.*)$#
    Но, судя по всему, вторая форма, поддерживает простые ссылки, поэтому ничего не получается... но.. лучше пусть на главную клиенты попадают, а не на 4mycar.)))

    Похоже не актуально :)
     
  5. inturned

    inturned Webmaster & Designer

    Регистр.:
    7 ноя 2011
    Сообщения:
    541
    Симпатии:
    264
    (https?:\/\/[^\/]{0,}\/)v_([^\/]{0,}\/[^$^\n]{0,})
    Вот такой еще вариант регулярки можно попробовать.
    В круглых скобках 2 группы. До и после знака "v_".
    Group 1 - "http://www.site.ru/"
    Group 2 - "goods_info/?brand=GENERAL+MOTORS&number=13307668"
    Ну дальше сам разберешься.
     
    BIZON нравится это.
  6. BIZON

    BIZON Перезагрузка...

    Moderator
    • Супермодератор
    Регистр.:
    31 окт 2006
    Сообщения:
    584
    Симпатии:
    1.571
    Что-то перестала работать моя регулярка, и твоя не срабатывает( :(
     
  7. romas_s

    romas_s

    Регистр.:
    9 ноя 2012
    Сообщения:
    248
    Симпатии:
    71
    http://www.site.ru/v_goods_info/?*****
    ?***** - это ссылки GET запроса, такие ссылки как правило формируются поисковиками при переходе на сайт, которые удачно индуксируются поисковиками.

    Если так же нужен редирект ссылок вида:
    http://www.site.ru/v_goods_info/ любой спец символ *****
    под спец символом имеется в виду ~!@#$%^&*()

    вот пример решения для всех спец символов, кроме спец символа #:
    /*
    [~!@$%^&*()] //ищем первый спец символ
    .+ // так же выделяем весь текст после найденного спец символа
    m // многострочный поиск
    */

    $find_klon_url = $_SERVER [HTTP_HOST].$_SERVER[REQUEST_URI]; - получаем текущий url


    $reg = "/[~!@#$%?^&*()].+/m";
    if ( preg_match ($reg, "$find_klon_url") )
    {
    // preg_replace - удаляем все что нашла регулярка - получаем чистый url
    $new_url = 'http://'. preg_replace($reg, "" , $find_klon_url); // получили правильный url без мусора
    header("Location: $new_url"); // редирект на правильную страничку
    exit;
    }

    Если хотите удалить только http://www.site.ru/v_goods_info/?*****
    замените строку на $reg = "/[?].+/m";

    Советую данный код добавить в первые строки файла index.php
    Если регулярка не сработает, добавите экранирование для символов:
    $reg = "/[\~\!\@\#\$\%\?\^\&\*\(\)].+/m";
     
    Последнее редактирование: 16 ноя 2017
  8. Defqwe

    Defqwe Писатель

    Регистр.:
    16 мар 2018
    Сообщения:
    7
    Симпатии:
    1
    pautina нравится это.