За последние 24 часа нас посетили 64058 программистов и 1741 робот. Сейчас ищут 818 программистов ...

Как изменять ссылку?

Тема в разделе "Прочие вопросы по PHP", создана пользователем macik, 14 фев 2007.

  1. macik

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

    С нами с:
    14 июл 2006
    Сообщения:
    71
    Симпатии:
    0
    Не пинайте... больно, где-то я встречал случайно данные по этому вопросу, а где не помню.
    Пытался искать через поиск, но не могу правильно задать запрос на поиск, потому что не помню в каком направлении надо искать.
    ---------------
    Как поменять ссылки такого вида
    www.sait.com/?id=12&info=5
    в такой
    www.sait.com/id/12/info/5/
    ---------------

    Всем огромное спасибо за понимание и помощь
     
  2. pel

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

    С нами с:
    19 янв 2007
    Сообщения:
    569
    Симпатии:
    0
    Адрес:
    Симферополь
    ищите про mod_rewrite
     
  3. macik

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

    С нами с:
    14 июл 2006
    Сообщения:
    71
    Симпатии:
    0
    Чет у меня нечего не выходит, подскажите пример.
    Есть допустим
    Адрес:
    Server_name/index.php?limit=4
    Но могут добавиться переменные после limit или их может вовсе и не быть.
    Переменные могут быть разные и название и значения.
    И я не могу догнать, как писать, наверно я не выспался.
     
  4. Anonymous

    Anonymous Guest

    подсказываю — иди и выспись.
     
  5. macik

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

    С нами с:
    14 июл 2006
    Сообщения:
    71
    Симпатии:
    0
    :lol: наверно так и будет ночью. А пока вы меня немного помучайте своими ответами.
     
  6. pel

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

    С нами с:
    19 янв 2007
    Сообщения:
    569
    Симпатии:
    0
    Адрес:
    Симферополь
    ищите про mod_rewrite и про ЧПУ
     
  7. macik

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

    С нами с:
    14 июл 2006
    Сообщения:
    71
    Симпатии:
    0
  8. macik

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

    С нами с:
    14 июл 2006
    Сообщения:
    71
    Симпатии:
    0
    вроде у меня получилось
    проверьте ребята
    Код (Text):
    1. RewriteRule ^([a-z]+)/([a-z]+)/([0-9]*)/(.*)$ /index.php?limit=$3 [R]
     
  9. simpson

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

    С нами с:
    11 фев 2006
    Сообщения:
    1.650
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
  10. macik

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

    С нами с:
    14 июл 2006
    Сообщения:
    71
    Симпатии:
    0
    Я посмотрел инфу, и вдоволь намучавшись.
    Я максимум что смог, так это сделать такой вариант.
    Код (Text):
    1. RewriteRule ^(.*)/(.*)/(.*)/$ /$1?$2=$3
    Теперь при обращении на адрес: http://**/new_id/id/29/
    Я попадаю сюда http://**/new_id.php?id=29
    В браузере светиться адрес http://**/new_id/id/29/ это супер.
    Но у меня все ссылки на сайте сделаны в таком виде http://**/new_id.php?id=29
    Я пытался сделать, чтобы если я нажимаю на ссылку такого вида http://**/new_id.php?id=29 то она в браузере видна под таким видом http://**/new_id/id/29/, вот так я пытался это сделать
    Код (Text):
    1. RewriteRule ^new_id.php?(.*)=(.*)$ /new_id/$1/$2/ [R]
    Может я чет не так делаю или это не возможно?
    Неужели надо писать все ссылке на сайте такого вида http://**/new_id/id/29/

    Дайте дельный совет, а то в доках на русском я ответа не нашел?
     
  11. pel

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

    С нами с:
    19 янв 2007
    Сообщения:
    569
    Симпатии:
    0
    Адрес:
    Симферополь
    да
     
  12. macik

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

    С нами с:
    14 июл 2006
    Сообщения:
    71
    Симпатии:
    0
    Но это как по мне не удобно? или я просто не привык.
     
  13. pel

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

    С нами с:
    19 янв 2007
    Сообщения:
    569
    Симпатии:
    0
    Адрес:
    Симферополь
    ничего :) на будущее пригодицца.
    главное - настроиться на поиск/замену и отключить мозг, чтоб не скучал))

    по идее еще можно включить буферизацию и перед выдачей пользователю производить замену регулярками... наверное... я не пробовал...
     
  14. macik

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

    С нами с:
    14 июл 2006
    Сообщения:
    71
    Симпатии:
    0
  15. macik

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

    С нами с:
    14 июл 2006
    Сообщения:
    71
    Симпатии:
    0
    Или здесь играет то, что этот файл существует?
     
  16. DarkElf

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

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    macik

    mod_rewrite работает с HTTP запросами. но никак не с отдаваемым контентом.
     
  17. pel

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

    С нами с:
    19 янв 2007
    Сообщения:
    569
    Симпатии:
    0
    Адрес:
    Симферополь
    ну, вы ж сами видели, mod_rewrite ссылку в адресной строке оставляет неизмененной. Он преобразует ее только для сервера.
    Конечно, можно поменять /new_id.php?id=29 на /new_id/id/29/
    Только вот в адресной строке так и останется /new_id.php?id=29, а серверу передастся запрос /new_id/id/29/... И сервер скажет page not found, т.к. будет искать индексный файл в папке /new_id/id/29/

    понятно?
    если "Не совсем", то просто поверьте на слово ;)
     
  18. macik

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

    С нами с:
    14 июл 2006
    Сообщения:
    71
    Симпатии:
    0
    DarkElf
    Я понимаю, что он работает только с адресной строкой.

    Но может ее, и поменять для пользователя. Тобиш в адресной строке.

    Как я понял можно сделать так чтобы он менял ссылку /new_id.php?id=29 на /new_id/id/29/ для пользователя, а для сервера он сменил бы обратно. В адресной строке как бы всегда светилось /new_id/id/29/ типа перенаправление произошло.

    Чета я тут нагородил, надеюсь, вы меня поймете.

    Сам
     
  19. pel

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

    С нами с:
    19 янв 2007
    Сообщения:
    569
    Симпатии:
    0
    Адрес:
    Симферополь
    нет
     
  20. macik

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

    С нами с:
    14 июл 2006
    Сообщения:
    71
    Симпатии:
    0
    А по чему тогда такие варианты работают :?: :
    1. RewriteRule ^(.*)/(.*)/(.*)/$ /$1?$2=$3
    2. RewriteRule ^(.*)/(.*)/(.*)/(.*)/(.*)/$ /$1?$2=$3&$4=$5

    Тобиш для разных ссылок типа
    1. /new_id/id/28/
    2. /new_id/id/28/limit/5/
    Сами понимаете все зависит от количества переменных.
     
  21. pel

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

    С нами с:
    19 янв 2007
    Сообщения:
    569
    Симпатии:
    0
    Адрес:
    Симферополь
    Масик, не нервируй меня. (почти (с)))
    хх. Даже не знаю, что сказать...
    Правильные варианты, вот и работают.

    кстати, это тоже как-то обходится... Только это не ко мне.
    Регулярки меня ненавидят, я их тоже не люблю, поэтому мы с ними разбираемся только когда припрёт и только копанием в мануалах и поисковиках.
     
  22. macik

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

    С нами с:
    14 июл 2006
    Сообщения:
    71
    Симпатии:
    0
    Всем огромное спасибо.

    pel
    В принципе то, что я хотел, почти, я научился делать.
    Один минус в этом, что надо писать ссылки в php не так как я привык по старинке. Но я думаю, что это мелочь главное достигнут результат удобства ссылок для пользователя и поисковиков.