Старый урл на новую страницу

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

a_n_d_y

Гуру форума
Регистрация
26 Мар 2006
Сообщения
470
Реакции
62
Тут чаще всего спрашивают как переделать динамические урлы в статические. Но у меня несколько другая проблема. Пишу абсолютно новый двиг для одного проекта, использую ЧПУ, с этим все ок. Появилась необходимость переадресации старого урла на новую страницу. Вот мой .htaccess
Код:
RewriteEngine on

RewriteCond %{HTTP_HOST} ^www.site$ [NC]
RewriteRule ^(.*)$ http://site/$1 [R=301,L]

RewriteCond %{REQUEST_URI} /oldpage.php
RewriteCond %{QUERY_STRING} ^id=(.{3})$
RewriteRule ^(.*)$ /newpage/%1 [R,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php?r=$1 [L,QSA]
первая и последняя части работают как часы, а вот с переадресацией со страницы oldpage.php?id=qwe на /newpage/qwe возникла проблемка, ссылка в адресной строке приобретает вот такой вид /newpage/qwe?id=qwe Как изменить правило, чтоб исчезла вот эта часть ?id=qwe ?
PS Средствами пхп не особо хотелось решать это. Да и в mod_rewrite захотелось получше разобраться...
 
Еси я не ошибаюсь то изменить ее
RewriteRule ^(.*)$ /newpage/%1 [R,L]
на что то примерно такого вида
RewriteRule ^id=(.+)$ /newpage/%1 [R,L]

P.S. Могу ошибиться мой мозг еще не проснулся, да и врятли проснеться :(
 
Не прокатило...
Есть еще мнения?
 
А если так?

RewriteRule ^newpage/(.*)$ oldpage.php?id=$1
 
А если так?

RewriteRule ^newpage/(.*)$ oldpage.php?id=$1
Но так вроде получается обратный вариант, мне нужно чтоб динамику пересылало на статику, а здесь статика будет отправляться на динамический урл. Для этого у меня обработчик единый в конце файла.
 
Разными способами пробовал, но нифига. В логах вроде все ок, но только до строки где прописан редирект, именно там и появляется ?id=qwe Видимо задача не для mod_rewrite, а обрабатывать и редиректить придется через пхп...
 
RewriteRule ^(.*)$ /newpage/%1 [R,L]
замените на [R=301,L]
 
Блин, а как все просто оказалось.
В правиле нужно было лишь знак вопроса в конце поставить. Вот окончательное решение, если кому пригодится...
Код:
RewriteCond %{REQUEST_URI} /oldpage.php
RewriteCond %{QUERY_STRING} ^id=(.{3})$
RewriteRule ^.*$ /newpage/%1? [L,R=301]
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху