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

Тема в разделе "Mod Rewrite / htaccess / ЧПУ", создана пользователем a_n_d_y, 16 апр 2009.

Статус темы:
Закрыта.
  1. a_n_d_y

    a_n_d_y

    Регистр.:
    26 мар 2006
    Сообщения:
    465
    Симпатии:
    61
    Тут чаще всего спрашивают как переделать динамические урлы в статические. Но у меня несколько другая проблема. Пишу абсолютно новый двиг для одного проекта, использую ЧПУ, с этим все ок. Появилась необходимость переадресации старого урла на новую страницу. Вот мой .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 захотелось получше разобраться...
     
  2. bunny

    bunny Постоялец

    Регистр.:
    17 мар 2007
    Сообщения:
    66
    Симпатии:
    4
    Еси я не ошибаюсь то изменить ее
    RewriteRule ^(.*)$ /newpage/%1 [R,L]
    на что то примерно такого вида
    RewriteRule ^id=(.+)$ /newpage/%1 [R,L]

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

    a_n_d_y

    Регистр.:
    26 мар 2006
    Сообщения:
    465
    Симпатии:
    61
    Не прокатило...
    Есть еще мнения?
     
  4. seobeginner

    seobeginner ищу кнопку бабло

    Регистр.:
    5 июл 2008
    Сообщения:
    224
    Симпатии:
    57
    А если так?

    RewriteRule ^newpage/(.*)$ oldpage.php?id=$1
     
  5. a_n_d_y

    a_n_d_y

    Регистр.:
    26 мар 2006
    Сообщения:
    465
    Симпатии:
    61
    Но так вроде получается обратный вариант, мне нужно чтоб динамику пересылало на статику, а здесь статика будет отправляться на динамический урл. Для этого у меня обработчик единый в конце файла.
     
  6. a_n_d_y

    a_n_d_y

    Регистр.:
    26 мар 2006
    Сообщения:
    465
    Симпатии:
    61
    Разными способами пробовал, но нифига. В логах вроде все ок, но только до строки где прописан редирект, именно там и появляется ?id=qwe Видимо задача не для mod_rewrite, а обрабатывать и редиректить придется через пхп...
     
  7. serjinio

    serjinio

    Регистр.:
    10 май 2007
    Сообщения:
    439
    Симпатии:
    49
    RewriteRule ^(.*)$ /newpage/%1 [R,L]
    замените на [R=301,L]
     
  8. a_n_d_y

    a_n_d_y

    Регистр.:
    26 мар 2006
    Сообщения:
    465
    Симпатии:
    61
    И че это может изменить? Ты лишь меняешь способ редиректа...
     
  9. a_n_d_y

    a_n_d_y

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