Прошу! помогите с редиректом (горю)

Dekrua

Мой дом здесь!
Регистрация
25 Июн 2014
Сообщения
258
Реакции
360
Всем привет, сделал апгрейд темы для магазина и все пошло на перекосяк с url, все исправил кроме одного но
например были ссылки вида
Для просмотра ссылки Войди или Зарегистрируйся_160_187
после перехода стало
Для просмотра ссылки Войди или Зарегистрируйся%2C160%2C187

помогите сделать редирект с "_" на "%2C"

Заранее спасибо
 
Спасибо, но по правде я не разобрался с сервисом
Поклацал по фильтрам сайта, всё формируется как надо, проблем с %2C не наблюдаю.
Я так понял проблему решили?
 
Нет, не решил. Для просмотра ссылки Войди или Зарегистрируйся - это пример
Так я и не по сайт.ком клацал. Там как бы и сайта нету...
Я говорил о:
Скрытое содержимое для пользователя(ей): Dekrua, UJy

Правда пока сообщение писал - сайт рухнул :(
А утром по фильтрам клацал - всё работало без каких-либо сбоев...
 
Так я и не по сайт.ком клацал. Там как бы и сайта нету...
Я говорил о:

Правда пока сообщение писал - сайт рухнул :(
А утром по фильтрам клацал - всё работало без каких-либо сбоев...
это старый, переход будет на новый
 
это старый, переход будет на новый
Если честно, вот так навскидку мне не удалось это сделать через htaccess, но можно применить метод костылирования из php...
В индексный файл (в корне, или в папке с темплейтом, смотря какая CMS) впихни такой код:
Код:
<?php
if (preg_match('~_~', $_SERVER['REQUEST_URI']))
    {
        header("HTTP/1.1 301 Moved Permanently");
        header("Location: http://".$_SERVER['HTTP_HOST'].preg_replace('~_~', '%2C', $_SERVER['REQUEST_URI']));
        exit();
    }
?>
Да костыль из костылей, да таким страдать не стоит, но в Вашем случае должно решить вопрос полностью...
PS: это преобразует абсолютно все _ в %2C, поэтому, если _ используется в каких-то модулях, или в админке - нужно дописать условие, что б не везде отрабатывало...
 
Если честно, вот так навскидку мне не удалось это сделать через htaccess, но можно применить метод костылирования из php...
В индексный файл (в корне, или в папке с темплейтом, смотря какая CMS) впихни такой код:
Код:
<?php
if (preg_match('~_~', $_SERVER['REQUEST_URI']))
    {
        header("HTTP/1.1 301 Moved Permanently");
        header("Location: http://".$_SERVER['HTTP_HOST'].preg_replace('~_~', '%2C', $_SERVER['REQUEST_URI']));
        exit();
    }
?>
Да костыль из костылей, да таким страдать не стоит, но в Вашем случае должно решить вопрос полностью...
PS: это преобразует абсолютно все _ в %2C, поэтому, если _ используется в каких-то модулях, или в админке - нужно дописать условие, что б не везде отрабатывало...
Как правильно дописать условие если там будет присутствовать еще символ ? т.е. если в ссылке встречается ? и _ то делать редирект иначе не надо
 
PHP:
$url = preg_replace_callback('~brand=\d+(_\d+)+~', function($m) {return str_replace('_', '%2C', $m[0]);}, $_SERVER['REQUEST_URI']);
if ($url != $_SERVER['REQUEST_URI']) {
  header("HTTP/1.1 301 Moved Permanently");
  header("Location: http://".$_SERVER['HTTP_HOST'].$url);
  exit();
}

А средствами mod_rewrite это можно провернуть примерно так
Код:
RewriteCond %{QUERY_STRING}  (brand=\d++)_(\d++)_?(\d++)?_?(\d++)?_?(\d++)?_?(\d++)?_?(\d++)?_?(\d++)?_?(\d++)?_?\K.*
RewriteCond %1\%2C%2\%2C%3\%2C%4\%2C%5\%2C%6\%2C%7\%2C%8\%2C%9\%2C%0  (brand=(?:(?:%2C)?\d+)+)(?:\%2C)*+(.*)
RewriteRule ^.*$ /$0?%1%2 [R=301,L,NE]
 
Последнее редактирование:
  • Нравится
Реакции: UJy
Назад
Сверху