За последние 24 часа нас посетил 17491 программист и 1716 роботов. Сейчас ищет 1991 программист ...

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

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

  1. Anonymous

    Anonymous Guest

    Зависит от реализации, выше обсуждалось. Запущеный из .htaccess, существенно медленней, чем прописанный непоследственно в httpd.conf
     
  2. virabhadra

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

    С нами с:
    11 дек 2006
    Сообщения:
    127
    Симпатии:
    0
    Адрес:
    Praha, Czech Republic
    Это то я понял, что использование .htaccess тормозит работу.
    Меня интересует количественная оценка этого "существенно медленнее".
    Как оценить скорость выполнения RewriteRule команд?
    Например конструкции, что я писал выше:
    RewriteRule ^category_([0-9]+)/page_([0-9]+)$ /index.php?cat=$1&page=$2
     
  3. Anonymous

    Anonymous Guest

    virabhadra, тормозит не это. Я же предлагал прочитать выше...
    Т.е. в момент разбора и выполнения .htaccess веб сервер уже ЗАКОНЧИЛ разбор запроса и формирования путей. Строчка RewriteEngine ON - запускает этот процесс ЗАНОВО, добавив к нему новые инструкции из .htaccess — что дает нам замедление более чем вдвое для КАЖДОГО запроса.
     
  4. virabhadra

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

    С нами с:
    11 дек 2006
    Сообщения:
    127
    Симпатии:
    0
    Адрес:
    Praha, Czech Republic
    Это я тоже понял, что фактичеки два раза читается httpd.conf, т.е. минимум в 2 раза медленнее.
    Просто у меня такая ситуация, что я не владелец хостинга и могу использовать только .htaccess
    Так меня интересовало именно время обработки RewriteRule, т.е. не разница между использованием и неиспользованием .htaccess, а вклад в замедление работы обработкой записей RewriteRule при условии, что .htaccess в любом случае присутствует.
     
  5. Anonymous

    Anonymous Guest

    сам по себе .htaccess не виноват.
    А по теме — не думаю что до пары тысяч посетителей в день это будет особо заметно...
     
  6. MaXyC_Web_Studio

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

    С нами с:
    31 дек 2006
    Сообщения:
    678
    Симпатии:
    3
    Адрес:
    Новоуральск
    форстайп все равно рулит. часто оч реврайт не установлен на серверах
     
  7. xak2

    xak2 Guest

    Я тут несколько раз все прочитал но про чпу ничего непонял, я непонял его смысла работы. Т.е. при чпу запрошеный файл целеком вставляется в Index.php?

    Я проексперементировал со всем здесь материалом но не понял.
    Допустим я хочу сделать такие ссылки:
    http://example.com/news/
    http://example.com/guestbook/

    Все эти файлы находятся в корневой папке сервера C:\AppServ\www\news.php, guestbook.php...
    Что и куда с каким содержимым мне надо добавить чтобы это работало.

    и 2, у меня кпримеру есть такая страничька http://example.com/galery/ на которой есть список галерей дапустим. И как при помощи ЧПУ сделать аналог этому http://example.com/index.php?page=galery&id=1?

    И нетолько ли ЧПУ красивее модревратора но и практичнеели?
     
  8. DarkElf

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

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    ЧПУ = человеко-понятный урл.
    mod_rewrite - один из методов обработки URL'а, понятного человеку, в URL, понятный скрипту, который обрабатывает страницу.

    Есть ряд способов.
    Самый простой:
    http://example.com/index.php/gallery/1/list.html - далее считывать переменную окружения $_SERVER['PATH_INFO'], list.html - больше для понятности пользователя, ну и чтобы, если пользователь сохранит страницу, то она открывалась в его браузере по-умолчанию.
     
  9. xak2

    xak2 Guest

    хм тогда это нето о чем я думал... я думал все куда сложнее и своеобразнее
     
  10. C

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

    С нами с:
    28 май 2006
    Сообщения:
    326
    Симпатии:
    0
    кхе. а вот я всё же хочу с помощью страницы ошибки сделать красивые ссылки, так как mod_rewrite сильно сложный.
    если в .htaccess написать
    ErrorDocument 404 http://localhost/cfreelancer4/
    то происходит переадресация, если так
    ErrorDocument 404 index.php
    то нет. А мне надо, чтбы была не просто переадресация, а чтобы параметры запроса передать, чтобы их самому распарсить и простенько распорядиться.
     
  11. Anonymous

    Anonymous Guest

    C, если ты хочешь
    То через mod_rewrite это делается одной строчкой:
    а внутри index.php смотришь $_SERVER['REQUEST_URI'] и $_SERVER['QUERY_STRING'] и парсишь их, как хочешь. По крайней мере, я так делаю =)
     
  12. C

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

    С нами с:
    28 май 2006
    Сообщения:
    326
    Симпатии:
    0
    уже понял, надо написать
    ErrorDocument 404 /cfreelancer4/index.php
     
  13. Anonymous

    Anonymous Guest

    Не надо так писать. Перечитай ветку, тут написано, почему.
     
  14. C

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

    С нами с:
    28 май 2006
    Сообщения:
    326
    Симпатии:
    0
    Отлично. Это работает. Буду тогда это юзать, раз через страницу ошибки не рекомендуется.
     
  15. Anonymous

    Anonymous Guest

    Правильно. Страницы ошибок — для ошибок. =)
     
  16. ohh...again?

    ohh...again? Активный пользователь

    С нами с:
    20 мар 2006
    Сообщения:
    39
    Симпатии:
    0
    Мне вот такой вот метод для начала больше понравился, чем мод_реврайт :) Особенно если учесть что я в регулярках полный сандаль.
    PHP:
    1. <?
    2. $args = explode('/', $_SERVER['REQUEST_URI']);
    3.  
    4. for ($i=0;$i<count($args);$i++)
    5. {
    6.          echo $args[$i].'<br>';
    7. }
    8. ?>
    Но вот в чём проблема, из-за слеша в начале и конце создаются два пустых элемента. Пользуясь случаем хочу спросить как от этого избавиться.
     
  17. Anonymous

    Anonymous Guest

    А это один фиг мод_реврайт. =)
    PHP:
    1. <?
    2. $args = explode('/', trim($_SERVER['REQUEST_URI'],'/'));   
    3. foreach($args as $arg) echo $arg.'<br/>'; }
    4. ?>
    а так? =)
     
  18. dark-demon

    dark-demon Активный пользователь

    С нами с:
    16 фев 2007
    Сообщения:
    1.920
    Симпатии:
    1
    Адрес:
    леноград
  19. Dagdamor

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

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    Кстати, очень красивое решение. :) Оно и от случайных повторов слешей внутри запроса помогает.
    НО: для запроса типа /content/0/blablabla оно вернет ерунду (т.к. элемент '0' также будет уничтожен).
     
  20. vb

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

    С нами с:
    6 июн 2006
    Сообщения:
    911
    Симпатии:
    0
    Адрес:
    Saint-Petersburg
  21. Anonymous

    Anonymous Guest

    vb, аффтору зачет! ;)
     
  22. Dagdamor

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

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    vb
    А где apache_emulation.zip? ;)
     
  23. vb

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

    С нами с:
    6 июн 2006
    Сообщения:
    911
    Симпатии:
    0
    Адрес:
    Saint-Petersburg
    Dagdamor, год назад предлагали заняться заменителем апача, я не готов заниматься на энтузиазме. А от лица конторы - нет проектов с нагрузками, с которыми не спровлялся бы апач, а следовательно нет и инвестиций :).
     
  24. Anonymous

    Anonymous Guest

    nanoweb.si.kz
     
  25. dark-demon

    dark-demon Активный пользователь

    С нами с:
    16 фев 2007
    Сообщения:
    1.920
    Симпатии:
    1
    Адрес:
    леноград
    всё правильно, нефиг привязываться к корню :D