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

BIZON

o_O
Команда форума
Администратор
Модератор
Регистрация
31 Окт 2006
Сообщения
770
Реакции
2.166
  • Автор темы
  • Модер.
  • #1
В общем нужно реализовать редирект 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#
Для проверки регулярного выражения воспользуйтесь Для просмотра ссылки Войди или Зарегистрируйся

пс
чот у меня нихрена не получается(
 
В общем нужно реализовать редирект 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#
Для проверки регулярного выражения воспользуйтесь Для просмотра ссылки Войди или Зарегистрируйся

пс
чот у меня нихрена не получается(
Выгрузи все ссылки в текстовой файл и сделай замену (Ctrl+h) C v_goods_info на goods_info
 
Что-то вроде:
^/v_goods_info/(.+)
/goods_info/$1
 
  • Автор темы
  • Модер.
  • #4
Выгрузи все ссылки в текстовой файл и сделай замену (Ctrl+h) C v_goods_info на goods_info
Спасибо дорогой.)) :) Но не вариант, потому что сайт на платформе, выгружать все ссылки смысла нет...

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


^/v_goods_info/(.+)
/goods_info/$1
Спс, но нет..

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

Похоже не актуально :)
 
(https?:\/\/[^\/]{0,}\/)v_([^\/]{0,}\/[^$^\n]{0,})
Вот такой еще вариант регулярки можно попробовать.
В круглых скобках 2 группы. До и после знака "v_".
Group 1 - "Для просмотра ссылки Войди или Зарегистрируйся"
Group 2 - "goods_info/?brand=GENERAL+MOTORS&number=13307668"
Ну дальше сам разберешься.
 
  • Автор темы
  • Модер.
  • #6
Что-то перестала работать моя регулярка, и твоя не срабатывает( :(
 
В общем нужно реализовать редирект 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#
Для проверки регулярного выражения воспользуйтесь Для просмотра ссылки Войди или Зарегистрируйся

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

Для просмотра ссылки Войди или Зарегистрируйся
?***** - это ссылки GET запроса, такие ссылки как правило формируются поисковиками при переходе на сайт, которые удачно индуксируются поисковиками.

Если так же нужен редирект ссылок вида:
Для просмотра ссылки Войди или Зарегистрируйся любой спец символ *****
под спец символом имеется в виду ~!@#$%^&*()

вот пример решения для всех спец символов, кроме спец символа #:
/*
[~!@$%^&*()] //ищем первый спец символ
.+ // так же выделяем весь текст после найденного спец символа
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 = 'Для просмотра ссылки Войди или Зарегистрируйся'. preg_replace($reg, "" , $find_klon_url); // получили правильный url без мусора
header("Location: $new_url"); // редирект на правильную страничку
exit;
}

Если хотите удалить только Для просмотра ссылки Войди или Зарегистрируйся
замените строку на $reg = "/[?].+/m";

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