Зависит от реализации, выше обсуждалось. Запущеный из .htaccess, существенно медленней, чем прописанный непоследственно в httpd.conf
Это то я понял, что использование .htaccess тормозит работу. Меня интересует количественная оценка этого "существенно медленнее". Как оценить скорость выполнения RewriteRule команд? Например конструкции, что я писал выше: RewriteRule ^category_([0-9]+)/page_([0-9]+)$ /index.php?cat=$1&page=$2
virabhadra, тормозит не это. Я же предлагал прочитать выше... Т.е. в момент разбора и выполнения .htaccess веб сервер уже ЗАКОНЧИЛ разбор запроса и формирования путей. Строчка RewriteEngine ON - запускает этот процесс ЗАНОВО, добавив к нему новые инструкции из .htaccess — что дает нам замедление более чем вдвое для КАЖДОГО запроса.
Это я тоже понял, что фактичеки два раза читается httpd.conf, т.е. минимум в 2 раза медленнее. Просто у меня такая ситуация, что я не владелец хостинга и могу использовать только .htaccess Так меня интересовало именно время обработки RewriteRule, т.е. не разница между использованием и неиспользованием .htaccess, а вклад в замедление работы обработкой записей RewriteRule при условии, что .htaccess в любом случае присутствует.
сам по себе .htaccess не виноват. А по теме — не думаю что до пары тысяч посетителей в день это будет особо заметно...
Я тут несколько раз все прочитал но про чпу ничего непонял, я непонял его смысла работы. Т.е. при чпу запрошеный файл целеком вставляется в 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? И нетолько ли ЧПУ красивее модревратора но и практичнеели?
ЧПУ = человеко-понятный урл. mod_rewrite - один из методов обработки URL'а, понятного человеку, в URL, понятный скрипту, который обрабатывает страницу. Есть ряд способов. Самый простой: http://example.com/index.php/gallery/1/list.html - далее считывать переменную окружения $_SERVER['PATH_INFO'], list.html - больше для понятности пользователя, ну и чтобы, если пользователь сохранит страницу, то она открывалась в его браузере по-умолчанию.
кхе. а вот я всё же хочу с помощью страницы ошибки сделать красивые ссылки, так как mod_rewrite сильно сложный. если в .htaccess написать ErrorDocument 404 http://localhost/cfreelancer4/ то происходит переадресация, если так ErrorDocument 404 index.php то нет. А мне надо, чтбы была не просто переадресация, а чтобы параметры запроса передать, чтобы их самому распарсить и простенько распорядиться.
C, если ты хочешь То через mod_rewrite это делается одной строчкой: а внутри index.php смотришь $_SERVER['REQUEST_URI'] и $_SERVER['QUERY_STRING'] и парсишь их, как хочешь. По крайней мере, я так делаю =)
Мне вот такой вот метод для начала больше понравился, чем мод_реврайт Особенно если учесть что я в регулярках полный сандаль. PHP: <? $args = explode('/', $_SERVER['REQUEST_URI']); for ($i=0;$i<count($args);$i++) { echo $args[$i].'<br>'; } ?> Но вот в чём проблема, из-за слеша в начале и конце создаются два пустых элемента. Пользуясь случаем хочу спросить как от этого избавиться.
А это один фиг мод_реврайт. =) PHP: <? $args = explode('/', trim($_SERVER['REQUEST_URI'],'/')); foreach($args as $arg) echo $arg.'<br/>'; } ?> а так? =)
Кстати, очень красивое решение. Оно и от случайных повторов слешей внутри запроса помогает. НО: для запроса типа /content/0/blablabla оно вернет ерунду (т.к. элемент '0' также будет уничтожен).
Dagdamor, год назад предлагали заняться заменителем апача, я не готов заниматься на энтузиазме. А от лица конторы - нет проектов с нагрузками, с которыми не спровлялся бы апач, а следовательно нет и инвестиций .