За последние 24 часа нас посетили 19640 программистов и 1696 роботов. Сейчас ищут 1848 программистов ...

RewriteRule - загадочная строчка

Тема в разделе "Регулярные выражения", создана пользователем Legos, 13 июн 2009.

  1. Legos

    Legos Активный пользователь

    С нами с:
    13 июн 2009
    Сообщения:
    5
    Симпатии:
    0
    Здрасьте :)

    Проблема такая:
    Нужно строчку a.php?b=c/d.php
    заменить на e.php?f=g.php
    через RewriteRule

    Пробовал:
    RewriteRule ^a\.php\?b\=c/d\.php$ e.php?f=g.php
    не идет.

    Конечно ссылка кривая и не ЧПУ, но такой уж сайт.
    Сначала сделали криво, потом раскрутили и раскрутчики просят ссылки на сайте не менять, но теперь это нужно.
    Поэтому только через RewriteRule.

    Скажите, где я налажал? :)
     
  2. lexa

    lexa Активный пользователь

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    В файле a.php пропиши:
    PHP:
    1. <?
    2. if (isset($_GET['b']) and $_GET['b']){
    3.     header('HTTP/1.0 301 Moved Permanently'); // перемещено навсегда, говорим мы браузерам и поисковикам
    4.     header('Location: e.php?f='.$_GET['b']); // собственно, перемещаем
    5.     exit; // тормозим скрипт, чтобы всё, что ниже не исполнялось
    6. }
    И никакой mod_rewrite не нужен.
     
  3. Legos

    Legos Активный пользователь

    С нами с:
    13 июн 2009
    Сообщения:
    5
    Симпатии:
    0
    Спасибо!
    А если все-таки через mod_rewrite ? :)
     
  4. lexa

    lexa Активный пользователь

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
  5. Legos

    Legos Активный пользователь

    С нами с:
    13 июн 2009
    Сообщения:
    5
    Симпатии:
    0
    Читали, если б понял, то на форум бы не писал :)
     
  6. Legos

    Legos Активный пользователь

    С нами с:
    13 июн 2009
    Сообщения:
    5
    Симпатии:
    0
    Пробовал, с header не прет:
    Warning: Cannot modify header information - headers already sent by (output started at index.php:1) in index.php on line 1
     
  7. antonn

    antonn Активный пользователь

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    Legos
    файл скрипта юникодовый? в блокноте виндовом сохранял?
    либо был другой вывод в браузер до посылки хедера
     
  8. Legos

    Legos Активный пользователь

    С нами с:
    13 июн 2009
    Сообщения:
    5
    Симпатии:
    0
    Юникод, исправил на анси - все заработало :) Спасибо.

    Но проблема не совсем решена.

    Сейчас происходит перенаправление на нужную страницу.
    Нужно же сделать, чтобы перенаправления не было, а было как с mod_rewrite.

    То есть чтобы адрес страницы не менялся.
     
  9. lexa

    lexa Активный пользователь

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    http://www.egoroff.spb.ru/portfolio/apa ... guide.html - тут обьясняется на примерах "задача - решение". На этом форуме не раз обсуждали и тему с RewriteRule и знаком вопроса в условии. Совершенно нет интереса тупо писать готовое решение, чтобы ты написал "спасибо", а через два месяца пришёл ещё кто-то и начал задавать тот же вопрос.