За последние 24 часа нас посетили 17282 программиста и 1625 роботов. Сейчас ищет 1591 программист ...

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

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

  1. Anonymous

    Anonymous Guest

    Ti поэтому вариант
    не совсем подходит...
     
  2. vb

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

    С нами с:
    6 июн 2006
    Сообщения:
    911
    Симпатии:
    0
    Адрес:
    Saint-Petersburg
    хм... а ведь и в самом деле :) +1
    . == любой символ за исключением ситуации описанной Олегом.

    И нам нужно запустить свой оброботчик, по твоему правилу если папка существует то в нее и идем, а Олег хотел сказать что у него возникают ситуации когда есть папка но нужно чтобы запустился обработчик на этот адрес а не открылась папка.
     
  3. def

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

    С нами с:
    24 апр 2006
    Сообщения:
    230
    Симпатии:
    0
    Адрес:
    Питер
    использую такой же вариант как у Ti. самый быстрый.
     
  4. Anonymous

    Anonymous Guest

    def, кстати говоря, mod_rewrite в контексте каталога - само о себе не быстрая штука, в отличие от реврайтов, вписанных в httpd.conf - потому что на момент открытия .htaccess все альясы и прочее уже отработали, и mod_rewrite рестартует этот процесс заново...
    Поэтому самый быстрый вариант скорее всего с ForceType...
     
  5. def

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

    С нами с:
    24 апр 2006
    Сообщения:
    230
    Симпатии:
    0
    Адрес:
    Питер
    ты не совсем понял. самый быстрый в контексте mod_rewrite, который в htaccess ;)
     
  6. Вльдемар

    Вльдемар Активный пользователь

    С нами с:
    20 май 2006
    Сообщения:
    635
    Симпатии:
    0
    Адрес:
    Белхород
    Посоветуйте, как лучше потом разбирать строчку
    Код (Text):
    1. /nomod_rewrite/chototut/itut
    из URL
    Код (Text):
    1. http://мойдомен.ru/nomod_rewrite/chototut/itut
     
  7. Anonymous

    Anonymous Guest

    Ну, я просто делаю,
    PHP:
    1. $args = explode('/',$_SERVER['REQUEST_URI'])
    Если в какие то конкретно переменные разносить то примерно так:
    PHP:
    1. list($part,$mode,$info) = explode('/',$_SERVER['REQUEST_URI'])
     
  8. the.Economist

    the.Economist Активный пользователь

    С нами с:
    8 окт 2006
    Сообщения:
    39
    Симпатии:
    0
    Адрес:
    СПб/Москва
    Я вот подумал что можно еще отработать через ErrorDocument, не меняя адреса в адресной строке браузера. Перенаправлять все 404 на скрипт, разбирающий запрошенный адрес. А ссылки на "красивые адреса" заведомо ставить с 404 ошибкой. Тогда никаких .page и ничего прочего не потребуется.
     
  9. Вльдемар

    Вльдемар Активный пользователь

    С нами с:
    20 май 2006
    Сообщения:
    635
    Симпатии:
    0
    Адрес:
    Белхород
    Спасибо, так и знал.
    Я думал еще спсобы какие то есть...

    Но... а как быть с поиском?
    на странице поиска у меня формируется строка типа
    Код (Text):
    1.  
    2. search.php?firm=тутфирма&city=тутгород&service=тутуслуги
    Просто человек не всегда заполняет все поля поиска и может получиться при подходе ЧПУ(если не заполнено поле город)
    Код (Text):
    1.  
    2. /search/тутфирма//тутуслуги
     
  10. Anonymous

    Anonymous Guest

    the.Economist, это уже обсуждалось...
    Аккамулирую минусы:
     
  11. the.Economist

    the.Economist Активный пользователь

    С нами с:
    8 окт 2006
    Сообщения:
    39
    Симпатии:
    0
    Адрес:
    СПб/Москва
    2 Горбунов Олег> извиняюсь, просмотрел...
     
  12. Ti

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

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    Код (Text):
    1. RewriteCond %{REQUEST_FILENAME} !-f
    2. # не надо - не юзаем
    3. # RewriteCond %{REQUEST_FILENAME} !-d
    4. RewriteRule . index.php [L,QSA]
     
  13. Ti

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

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    GET работает как обычно, обрезать параметры можно так:
    PHP:
    1. <?php
    2. $baseDir = dirname($_SERVER['SCRIPT_NAME']);
    3. $url = parse_url($_SERVER['REQUEST_URI']);
    4. ?>
    5. <dl>
    6.     <dt>BASE DIR</dt><dd><?=$baseDir?></dd>
    7.     <dt>PATH</dt><dd><?=$url['path']?></dd>
    8. </dl>
     
  14. xak2

    xak2 Guest

    Неподскажете как это:
    PHP:
    1. <php
    2. $module = $_GET['module'];
    3. if ($module == "Registration";
    4. { include("pages/Registration.php"); }
    5. else { include("news/php"); } ?>
    6.  
    Переделать в то, что автоматически при входе на index.php?module=Registration открывало фаил Registration.php из папки pages/ безз вноса строчьки if ($module = "lalala") в скрипт.
     
  15. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
  16. xak2

    xak2 Guest

    Неправельно юзал поиск! Извини. И спасибо!
     
  17. virabhadra

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

    С нами с:
    11 дек 2006
    Сообщения:
    127
    Симпатии:
    0
    Адрес:
    Praha, Czech Republic
    Что-то я запутался в модрерайте.
    В файле .htaccess пишу так:
    RewriteRule ^category_([0-9]+)/page_([0-9]+)$ /index.php?cat=$1&page=$2

    т.е. я хочу, чтобы ссылка /category_123/page_4 преобразовывалась в /index.php?cat=123&page=4
    Ссылка успешно преобразовывается в то что нужно и php-код успешно генерит html-текст (смотрел через View Source), но ссылки на картинки не работают, так как эксплорер дописывает в начале ссылок /category_123/, т.е. файлы ищутся в несуществующей директории category_123.
     
  18. vb

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

    С нами с:
    6 июн 2006
    Сообщения:
    911
    Симпатии:
    0
    Адрес:
    Saint-Petersburg
    virabhadra, все правильно. В чем вопрос?
     
  19. Dagdamor

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

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    virabhadra
    Если используешь "красивые" ссылки, придется отвыкать от относительной адресации.
    Все ссылки в HTML (на страницы, на картинки, стили и т. п.) нужно делать абсолютными - начинать ссылку с корневого каталога (/images/123.gif) либо как вариант полностью прописывать адрес сайта начиная с http://.
     
  20. Anonymous

    Anonymous Guest

    Фигня. С начала топик читайте.
    http://www.php.ru/forum/viewtopic.php?p=21130#21130
     
  21. Dagdamor

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

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    Олег - посмотри как у Вирабхадры выглядит .htaccess:

    все пучком, перехватываются только запросы без расширений вообще.
     
  22. Anonymous

    Anonymous Guest

    Dagdamor,
     
  23. virabhadra

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

    С нами с:
    11 дек 2006
    Сообщения:
    127
    Симпатии:
    0
    Адрес:
    Praha, Czech Republic
    Dagdamor, спасибо! Действительно помогло. Расставил везде слеши в началах урлов и все заработало!
    Честно говоря не знал эту особенность слеша в начале. Заполнил теперь, видимо большой, пробел в знаниях. :shock:
     
  24. Anonymous

    Anonymous Guest

    А это да, кстати, важная штука.
     
  25. virabhadra

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

    С нами с:
    11 дек 2006
    Сообщения:
    127
    Симпатии:
    0
    Адрес:
    Praha, Czech Republic
    Информацию о HTML и Javascript я выуживаю из MSDN, но чего-то не нашел там ничего об этой особенности слеша в URL.
    Но это уже детали...

    Меня еще интересует, вцелом, на сколько mod_rewrite отягащает работу сервера Apache?