1. Задавайте здесь вопросы о коде, которые не подходят в другие разделы, такие как:
    Дизайн > Верстка
    PHP > Как сделать на PHP
    Скрыть объявление

Как изменить порядок перенаправления [R]

Тема в разделе "Web Coding", создана пользователем NetStranger, 5 ноя 2008.

Статус темы:
Закрыта.
Модераторы: latteo
  1. NetStranger

    NetStranger Постоялец

    Регистр.:
    16 сен 2008
    Сообщения:
    124
    Симпатии:
    1
    RewriteRule ^([A-Za-z0-9-]{2,9})?$ index.php?page=$1 [L]

    вот при такой настройке если набрать
    test.ru/test
    выведеться тоже самое что и по ссылке
    test.ru/index.php?page=test

    если сделать такую настройку
    RewriteRule ^([A-Za-z0-9-]{2,9})?$ index.php?page=$1 [R,L]

    Если набрать test.ru/test адрес тут же меняется на test.ru/index.php?page=test

    а как сделать наоборот? чтобы из test.ru/index.php?page=test тут же в адресе было test.ru/test ? Это вообще реально?

    Спасибо.

    PS Чтобы не далеко ходить, может подскажете, как сделать чтобы вместо test.ru/test было test.ru/test.php ?
     
  2. tommy

    tommy Постоялец

    Регистр.:
    7 авг 2006
    Сообщения:
    74
    Симпатии:
    12
    Код:
    RewriteRule ^([A-Za-z0-9-]{2,9})\.php$ index.php?page=$1 [L]
    
    Код:
    RewriteRule ^index\.php\?page=([A-Za-z0-9-]{2,9})$ $1.php  [R,L]
    
    пробуйте
     
  3. NetStranger

    NetStranger Постоялец

    Регистр.:
    16 сен 2008
    Сообщения:
    124
    Симпатии:
    1
    Спасибо за быстрый ответ но неверно ни то ни другое.
    Данная настройка делает реврайт, НО не посылает в переменную page никакого значения. Прошу заметить что без этой настройки значения page летят в $_GET['page'] оч хорошо ))

    на данную настройку хост не отреагировал вообще никак.

    есть еще предложения?
     
  4. serg_g

    serg_g Создатель

    Регистр.:
    31 окт 2008
    Сообщения:
    35
    Симпатии:
    9
    RewriteCond %{QUERY_STRING} ^page=(.+)$
    RewriteRule ^index.php$ http://www.test.ru/%1/? [R=301]

    преобразования с QUERY_STRING делаются через RewriteCond %{QUERY_STRING}

    а [R=301] чтобы прямо в адресе браузера
     
    NetStranger нравится это.
  5. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    591
    Вообще-то, для того чтоб передавались значения GET существует флаг QSA :p
     
  6. serg_g

    serg_g Создатель

    Регистр.:
    31 окт 2008
    Сообщения:
    35
    Симпатии:
    9
    флаг QSA передаст скрипту QUERY_STRING, но исходную задачу
    мы этим флагом не рашаем
     
  7. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    591
    Задача сама по себе не понятна. Кроме как блажь, другого объяснения найти не могу.
     
  8. NetStranger

    NetStranger Постоялец

    Регистр.:
    16 сен 2008
    Сообщения:
    124
    Симпатии:
    1
    а что в нашем мире не блажь? в таком случае ЧПУ вообще одна сплошная блажь
     
  9. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    591
    ЧПУ - это когда URL вида bla/1/2.html обрабатывается на сервере как bla.php?p1=1&p2=2.
    Ты же судя по написаному хочешь наоборот :D
     
  10. NetStranger

    NetStranger Постоялец

    Регистр.:
    16 сен 2008
    Сообщения:
    124
    Симпатии:
    1
    Если мыслить логически то ЧПУ это - Человекопонятный УРЛ , по сему оно должно стремиться сделать все человекопонятным) следовательно я хочу чтобы если человек откуда то узнал ссылку вида bla.php?p1=1&p2=2 и набрал ее в адресной строке она автоматически заменилась на bla/1/2.html , ему бы такая ссылка больше понравилась чем ту что он набирал сам )

    вот я и удивляюсь зачем сделали параметр R если он делает абсолютно наоборот
     
Статус темы:
Закрыта.