301 редирект в зависимости от параметра

Статус
В этой теме нельзя размещать новые ответы.

greatilya

Создатель
Регистрация
21 Май 2009
Сообщения
35
Реакции
3
не могу никак найти решение, уже настроил mod_rewrite и т.д. ... но никак не могу сделать маленький ньюанс, надо перенести на новую версию сайта страницу со старого.

сделать нужно желательно с помощью .htaccess

Необходимо сделать перенаправление из:
Код:
http://domain.ru/index.php?page=385
в:
Код:
http://domain.ru/index.php?page=386

Пробовал так:
Код:
RedirectMatch 301 /index.php?page=385$ http://domain.ru/index.php?page=386

не получается (((...
 
RewriteEngine On
RewriteBase /
RewriteRule ^index.php?page=385$ /index.php?page=386 [NC,L,R=301]

Redirect и RedirectMatch в модуль mod_rewrite не входят, это упрощённые RewriteRule.
 
RewriteEngine On
RewriteBase /
RewriteRule ^index.php?page=385$ /index.php?page=386 [NC,L,R=301]
Redirect и RedirectMatch в модуль mod_rewrite не входят, это упрощённые RewriteRule.

в корень сайта положил файл .htaccess
в котором написал:
Код:
RewriteEngine On
RewriteBase /
RewriteRule ^index.php?page=385$ /index.php?page=386 [NC,L,R=301]
больше в файле ничего нет.

итог: никакой реакции

вот для теста закинул сюда Для просмотра ссылки Войди или Зарегистрируйся
можете сравнить со страницей 386

я всё правильно сделал? может где-то есть хитрость?
 
Тысяча извинений, я сказочно протупил. В RewriteRule нельзя использовать параметры GET, ляпнул автоматически.

Код:
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} ^page=385$
RewriteRule index.php index.php?page=386 [L,NC,R=301]
 
Тысяча извинений
Вам явно не за что извиняться, как минимум вы мне помогаете....

Всё установил, проверил, работает!!! ))))) спасибо большое.... я очень много времени потратил на эту тонкость с GET...

Добавлено через 21 минуту
Код:
RewriteEngine On

RewriteBase /
RewriteCond %{QUERY_STRING} ^page=7$
RewriteRule index.php /page31/o_studii/ [L,NC,R=301]

RewriteBase /
RewriteRule ^page([0-9]*)/(.*)/ /index.php?page=$1

итого надо чтобы заходя под адресом index.php?page=7
попадали в page31/o_studii/
сейчас же попадает в page31/o_studii/?page=7

подскажите если можно, как это решить?
 
Вам явно не за что извиняться, как минимум вы мне помогаете....
Мне мучило чувство стыда за тупнячок-с :D

Код:
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} ^page=7$
RewriteRule index.php /page31/o_studii/ [L,NC,R=301]
RewriteBase /
RewriteRule ^page([0-9]*)/(.*)/ /index.php?page=$1
(regexp) называется Capturing Group, т.е. то, что попадает в этот regexp, можно вызвать $N, где N - это порядковый номер Capturing Group.

В вашем случае надо делать так:
Код:
# Объявляется в самом начале реврайтов
RewriteEngine On
RewriteBase /

# Правило #1
RewriteCond %{QUERY_STRING} ^page=7$
RewriteRule index.php /page31/o_studii/ [L,NC,R=301]

# Правило #2 (при необходимости)
RewriteCond %{QUERY_STRING} ^page=385$
RewriteRule index.php index.php?page=386 [L,NC,R=301]

И так далее. На упомянутый 1 раз RewritreCond, будут действовать все следующие далее RewriteRile до тех пор, пока не будет задан новый RewriteCond.




---------------------
Вдогонку, покажу пример использования (.*), чтобы было понятнее.

Код:
RewriteEngine On
RewriteRule ^page/(.*)$ index.php?page=$1 [L]
Все, что попадает в (.*) будет передано, как параметр в ?page=$1. Т.е. набирая Для просмотра ссылки Войди или Зарегистрируйся будет скрипту передаваться в виду Для просмотра ссылки Войди или Зарегистрируйся
 
Что то я не понял, как все таки отрезать Query_String у нового адреса (на который нас направил 301й редирект). Поясните пожалуйста.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху