За последние 24 часа нас посетили 17548 программистов и 1723 робота. Сейчас ищет 1961 программист ...

Как делать красивые URL без mod_rewrite

Тема в разделе "PHP для новичков", создана пользователем Ti, 13 окт 2006.

  1. Dagdamor

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

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    Горбунов Олег
    Мы говорим не о статических/динамических картинках, а о том, стоит использовать mod_rewrite для поддержки красивых ссылок или нет.
    Вообще в таких случаях надо делать хитрее: ссылка выглядит как обычный путь к изображению, mod_rewrite перехватывает ее только если данный файл в каталоге отсутствует. Скрипт, генерирующий картинку, перед ее отдачей сохраняет копию в каталоге. Повторные запросы к той же картинке уже отрабатывают как статика. ^_^
     
  2. Anonymous

    Anonymous Guest

    Да, примерно. Я к тому, что какой смысл делать вообще ЧПУ для фотографий? Кеширование — тоже вопрос, конечно, отдельный, это понятно, а именно ЧПУ (Человеко-понятный УРЛ) — мало кому это нужно...
     
  3. AviOn

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

    С нами с:
    16 июл 2007
    Сообщения:
    171
    Симпатии:
    0
    Адрес:
    Кировоград, Украина
    Насчёт ЧПУ:

    Options +FollowSymLinks
    RewriteEngine on
    RewriteRule ^(.*)/$ index.php?page=$1 [L]

    УРЛ: http://site/about/ - работает... и нормально

    а, вот такое:

    RewriteRule ^(.*)/(.*)/$ index.php?page=$1&id=$2 [L]

    УРЛ: http://site/news_view/3/ - не работает...

    кто знает можете помочь??[/php]
     
  4. ambuddy

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

    С нами с:
    14 сен 2007
    Сообщения:
    6
    Симпатии:
    0
    2 Ti
    Скажите, а почему нельзя пользоваться mod_rewrite? Я просто собираюсь как раз этим вот заниматься и вроде с mod_rewrite'ом разобрался и RegEx вробе бы понял как писать, а тут вдруг какие-то новые решения. Или это просто на тот случай, что хостинг не поддерживает mod-rewrite?
     
  5. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    Да, если хостинг его не поддерживает, но как правило я таких хостингов что-то не видел, так что народ пользуеться rewrite'ом и не париться :)
     
  6. Ti

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

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    Да.
    Предпочтительно использовать mod_rewrite, он более гибкий
     
  7. Nog

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

    С нами с:
    12 окт 2007
    Сообщения:
    1
    Симпатии:
    0
    зачем использовать ЧПУ, если при индексировании роботы уже давным давно не обращают на это внимание?

    И зачем кому-либо нужна замена news.php?date=12-10-2007 на news/2007/10/12 ???
    Простенький пример: если у меня на странице news.php?date=12-10-2007&page=3, то получается, что чпу будет допустим news/2007/10/12/3? А если надо еще параметров GET навставлять - то как тут быть?

    ЧПУ - это фетешизм и не более того! Опомнитесь!
     
  8. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    При чём здесь ЧПУ и роботы? ЧПУ - Человеко-понятный URL. Если бы ЧПУ изобретали для роботов, то его назвали бы РПУ - Робото-понятный URL. Здесь уже обсуждалась данная тема, и были высказаны разные мнения.
    Код (Text):
    1. news/2007/10/12/3/param1/param2/paramN
     
  9. Ti

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

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    uri часть пользовательского интерфеса
    news/2007/10/12
    предполагает наличие страниц news/2007/10, news/2007 и news
    понимая это, посетители с большой вероятностью, захотев посмотреть новости за 2006 год, наберут uri
     
  10. antonn

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

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    пользователи обычно не набирают, а щелкают по ссылкам :)
     
  11. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
  12. RomanBush

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

    С нами с:
    5 дек 2007
    Сообщения:
    798
    Симпатии:
    0
    Адрес:
    200 км от Москвы
    Стандартная ошибка. В данном случае index.php ищется в пути http://site/news_view/ - а так как этого пути нет - то и не находица.
    Решение:
    RewriteRule ^(.*)/(.*)/$ /index.php?page=$1&id=$2 [L]
     
  13. lexinfo

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

    С нами с:
    16 янв 2007
    Сообщения:
    51
    Симпатии:
    0
    Адрес:
    Ростов-на-Дону
    Тут обсуждалась такая штука, как:
    А как сделать, чтобы этот ForceType не касался папки admin??
     
  14. sword dancer

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

    С нами с:
    17 фев 2008
    Сообщения:
    295
    Симпатии:
    0
    http://xxx.ru/?topic:ch-p-u/page:4
    вполне понятно и не нужно никаких шаманств, кроме ручного парсинга запроса, которое имеет больше плюсов, чем минусов.
     
  15. nimistar

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

    С нами с:
    30 май 2007
    Сообщения:
    919
    Симпатии:
    0
    sword dancer - писец
     
  16. lexinfo

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

    С нами с:
    16 янв 2007
    Сообщения:
    51
    Симпатии:
    0
    Адрес:
    Ростов-на-Дону
    Так мне кто-нить подскажет?:)
     
  17. Starshoy

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

    С нами с:
    5 ноя 2008
    Сообщения:
    18
    Симпатии:
    0
    Как с помощью скрипта PHP переделать адресную строку, возвращаемую пользователю?
     
  18. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    Starshoy
    а сам понял что написал?
     
  19. Starshoy

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

    С нами с:
    5 ноя 2008
    Сообщения:
    18
    Симпатии:
    0
    Ну я о том, что вот мод-рэфрайт реврайтит строку адреса и уже потом, если в конечном варианте есть ссылка на пхп, то этот пхп выполняется. А вот после выполнения как зашифровать её обратно?))
    Или я наверно какую-то простейшую истину не понял?)
     
  20. GudGuy

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

    С нами с:
    14 июн 2007
    Сообщения:
    909
    Симпатии:
    0
    Адрес:
    Москва
  21. PetrOFF

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

    С нами с:
    13 май 2009
    Сообщения:
    102
    Симпатии:
    0
    А нельзя обойтись, без htaccess. А то я видел пару сайтов: парсер сам есть, а вот в htaccess не намека на пере направление.
    P/s А зачем писать функцию по разбору url, если есть parse_url?
     
  22. Так проще
    <?php
    if ($_GET['to'] == 'open')
    {
    что будет происходить посли пирихода по ссылке site.com?to=open
    }
    ?>
     
  23. Mark32

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

    С нами с:
    15 июн 2008
    Сообщения:
    539
    Симпатии:
    2
    Есть правило

    RewriteEngine on
    RewriteRule ^([^/\.]+)/?$ /folder/index.php?id=$1 [L]

    то бишь site.ru/folder/index.php?id=456, он откроет теперь site.ru/456
    Ссылка уже опубликованная на сайте site.ru/folder/index.php?id=456 от этого правила сама не изменится на site.ru/456, и будет также работать. Вопрос, можно чтобы это правило автоматом перебило адреса на новые?
     
  24. TheShock

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

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    заменяй адреса в скрипте. мод рейврайт только перенаправляет.
     
  25. Mark32

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

    С нами с:
    15 июн 2008
    Сообщения:
    539
    Симпатии:
    2
    пример абстрактный можно? какими функциями это делают обычно?