Помогите, плз, с 301 редиректом

M0
На сайте с 13.02.2012
Offline
18
408

Уважаемые Гуру, help me, pleassssse...:confused:

Сделали рестайлинг сайта и надо настроить 301 редирект

Старая версия сайта была из одного index.php, который по get-параметру 'id' подгружал нужное содержимое.

За параметром 'id' могут идти еще другие get и post параметры, но они не оказывают влияния на определение страницы перехода.

Редирект из php-скрипта по определенным причинам не прокатывает, нужно настроить редирект через .htaccess

В результате проработки вопроса в хтаццессе возник следующий фрагмент (к примеру для id=8):

RewriteEngine On

RewriteBase /
RewriteCond %{QUERY_STRING} ^id=8.*$
RewriteRule index.php new_page.php [L,R=301]

В результате при переходе на страницу my-site.ru/index.php?id=8&page=1 после редиректа в адресной строке получаю my-site.ru/new_page.php?id=8&page=1, а передача параметров мне категорически не нужна!!! :no: Нужно просто перейти на страницу new_page.php без параметров!!!

Понимаю что лажа в написании условия редиректа, но как его правильно прописать хоть убей - не могу выродить...

Подскажите, плз, кто знает, или кому доводилось такое творить, или кто разбираецца в редиректах - я впервые с ним столкнулся... :(

Заранее признателен,

Pleassssse... :rolleyes:

Проблему решил путем добавления "?" после new_page.php, т.е. рабочий код выглядит так:

RewriteEngine On

RewriteBase /
RewriteCond %{QUERY_STRING} ^id=8.*$
RewriteRule index.php new_page.php? [L,R=301]
M2
На сайте с 11.01.2011
Offline
341
#1

Redirect 301 /старый-адрес/ /новый-адрес/

Как-то так еще можно.

------------------- Крутые VPS и дедики. Качество по разумной цене ( http://cp.inferno.name/view.php?product=1212&gid=1 ) VPS25OFF - скидка 25% на первый платеж по ссылке выше
M0
На сайте с 13.02.2012
Offline
18
#2
mark2011:
Как-то так еще можно.

Спасибо, это самое простое решение, но не в моем случае:

1. В старой версии за id могут быть еще куча параметров типа page=1, page=2, ...

Ручками все не прописать...

2. В старой версии все get-переменные были прописаны к файлу index.php, и в новой версии тож есть index.php, более того многие страницы старой версии редиректятся именно на index.php - зацикливаемся...

siv1987
На сайте с 02.04.2009
Offline
427
#3

Если уж говорить о примере id=8 то рабочий код выглядит так

RewriteCond %{QUERY_STRING} =id=8

RewriteRule ^index.php /new_page.php? [L,R=301]

M0
На сайте с 13.02.2012
Offline
18
#4
siv1987:
Если уж говорить о примере id=8 то рабочий код выглядит так
RewriteCond %{QUERY_STRING} =id=8
RewriteRule ^index.php /new_page.php? [L,R=301]

А с учетом того, что "За параметром 'id' могут идти еще другие get и post параметры" в условии id=8 превращается в ^id=8.*$

:)

siv1987
На сайте с 02.04.2009
Offline
427
#5

А с учетом того, что кроме ид 8, могут быть еще и ид 80-89, 800+ , превращается такое условие в г-условие. Либо там нет больше параметров и пишите нормально, либо пишите правильно конец выражения (&|$)

M0
На сайте с 13.02.2012
Offline
18
#6
siv1987:
А с учетом того, что кроме ид 8, могут быть еще и ид 80-89, 800+ , превращается такое условие в г-условие. Либо там нет больше параметров и пишите нормально, либо пишите правильно конец выражения (&|$)

Не могу не согласиться... Уже все возможные ид перебраны, правильные условия составлены и отправлены по нужному адресу... 🙄

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий