Помогите с 301 редиректом

onenures

Создатель
Регистрация
17 Дек 2007
Сообщения
17
Реакции
1
Здравствуйте! В тематической ветке по shop script никто не отвечает. Заранее прошу прощения за дублирование вопроса, но в mod rewrite я нуб. Сижу читаю руководство по нему, но больно он заумный...

Суть проблемы. SSP. Прикручена заказная ЧПУ, работающая как модуль. Т.е. через пхп обрабатывается урл и из базы дергается значение. Проблема в том, что нужно сделать 301 редирект со старых страниц на новые, с чпу.

В htaccess:

Код:

options +followsymlinks
Rewriteengine on

Rewritecond %{REQUEST_FILENAME} !-f
Rewriterule . index.php?99=%{REQUEST_URI} [L]

"99" - значение переменной, которое задается в скрипте, - так написана чпу. После этого урл уже обработан и выдается с чпу. Но старые страницы вида index.php?productID=XXX и index.php?categoryID=XXX также присутствуют (XXX - ID в базе). Нужно сделать перенаправление со старых. Помогите, пожалуйста. Можно ли вообще разобраться с этим парой правил, чтобы перенаправление автоматическим, ведь страницы формируются динамически?
 
Напишите какой именно вид ссылок сейчас, на которые и нужно редиректить, потому что от правил, которые вы скинули, толку нет никакого.
 
ShoxMaster
Спасибо, что откликнулись.

Пример ссылки товара без ЧПУ:
xttp://сайт/index.php?productID=15412

Эта же ссылка с ЧПУ:
xttp://сайт/fleshka-16-gb-kingston-data-traveler--15412.htm

Здесь - "fleshka-16-gb-kingston-data-traveler" - значение, хранимое в БД, его можно задать каким угодно

"15412" - ID, как видно из первой ссылки.

Окончание "htm" тоже можно менять, но возьмем только этот частный случай. Мне бы хоть принцип понять.
 
Код:
RewriteEngine on
RewriteCond %{QUERY_STRING} productID=(\d+)
RewriteRule ^index.php$ /fleshka-16-gb-kingston-data-traveler--%1.htm? [R=301,L]
Проверяется правило в котором на строку GET-запроса накладывается регулярка. Если всё гуд, и после productID= идёт ряд цифр длиной больше 1 - выполняется правило, в котором с index.php редиректит на fleshka-16-gb-kingston-data-traveler--%1.htm?. %1 - это група, которая вырезана регуляркой с поверки условия, тоесть (\d+) это и есть ID на который будет редирект. Знак вопроса в конце адреса чистит строку GET запроса который нам больше не нужен. Флаг R=301 указывает, что документ перемещён на другой постоянный адрес. Только есть один нюанс: "fleshka-16-gb-kingston-data-traveler" - эту хрень нелзя изменить, нужно либо добавлять ещё правила, либо переписать модуль ЧПУ.

Вобщем всё, надеюсь доходчиво написал:)
 
Спасибо огромное. Какой кошмар, мои подозрения подтвердились. Получается одним правилом не указать "иди на страницу с чпу". Придется все вручную прописывать.
 
Назад
Сверху