ЧПУ и разбор URL'а

Savio

Новичок
ЧПУ и разбор URL'а

Вопрос по рганизации ЧПУ.
Какой из ниже приведенных двух вариантов(использование mod_rewrite) более правильный/лутчше на ваш взгляд
1) Разбор URL'а выполнять в .htaccess и далее передавать index.php
2) index.php сам занимается разбором URL'а
спасибо
 

Single

пилот капсулы
использую второй вариант.
т.к. для корректного разбора моих урл требуется обращение к БД за дополнительными данными.
Выбор подхода зависит от конкретных задач, кому то и первого варианта вполне достаточно.
 

phprus

Moderator
Команда форума
Savio
Второй вариант более гибкий и имеет больше возможностей, по этому чаще будет обоснованно применять его.

Первый вариант я использую только если есть какие либо общие правила по перенаправлению на разный файлы в зависимости от вида URL. К примеру:
/admin/* => /backend.php
/* => /index.php

Sepuka
Наносекунды экономим? Покажи в каком случае разбор урла станет в программе самым узким местом, которое необходимо оптимизировать в первую очередь?
 

Savio

Новичок
Я тоже думаю что второй вариант более гибче. Единственное что, нужно еще отправлять заголовки HTTP(200,404 и так далее...) но это мелочи....

-~{}~ 30.04.10 11:31:

правда есть одно неудобство в логах того же apache. Везде 404...
 

Фанат

oncle terrible
Команда форума
с какго перепугу там 404 будет?

-~{}~ 30.04.10 11:34:

борца с наносекундами выпилил
 

Sepuka

Новичок
Н-Е-Е-Е-Е-Т!!! за что?????!!!!!!! ублюдожная домохозяйка заткнула рот =)
 

Savio

Новичок
С таго самого перепугу.
Например http://mysite.com/category/tratatat/1
category/tratatat/1 - таких директорий нету, соотвественно в логах апача 404.
 

Gas

может по одной?
соотвественно в логах апача 404
Savio
срочно учить мат.часть по теме mod_rewrite, не будет никакого 404
Я тоже за второй вариант, не зря он используется во всех известных php-фреймворках, в RoR'е, django
 

Духовность™

Продвинутый новичок
Savio
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !\.(js|ico|gif|jpg|jpeg|png|css|cur|php|phtml|doc|xls|txt)$ [NC]
RewriteRule (.*) index.php?_path=/$1&%{QUERY_STRING} [L]

спасет отца русской демократии. В index.php ты имеешь $_REQUEST['_path'] и на основании того, что лежит в переменной ты и получаешь нужные тебе данные. У меня это вот так организованно: клик.
 

Фанат

oncle terrible
Команда форума
Savio
а ошибки будут при обоих вариантах или только при втором?
 

Savio

Новичок
я провобал только второй. при первом варианте не должны быть по идеи....
 

Фанат

oncle terrible
Команда форума
по какой идеЕ?
в чем разница между первым и вторым вариантом с точки зрения 404 ошибки? В первом запрашиваемые ресурсы существуют физически что ли?
 

Savio

Новичок
Вы наверное не поняли меня, или я плохо объяснил.
404 в логаг апача. сам сайт нормально работает. возвращает нормальный заголовок HTTP 200 и так далее.
просто сам апач у себя в логах создает записи с ошибкой 404, так как считает что каталогов нету физически. он же на в курсе что я использую mod_rewrite неким образом. Или же я чего то недопонимаю как "объяснить " веб-серверу что я делаю ЧПУ и это не 404.
 

Beavis

Banned
Savio
>> он же на в курсе что я использую mod_rewrite неким образом

mod_rewrite - это модуль апача. как он может быть не в курсе? не пишите чушь

-~{}~ 30.04.10 13:16:

Автор оригинала: triumvirat
?_path=/$1&%{QUERY_STRING} [L]

В index.php ты имеешь $_REQUEST['_path']
это лишнее
в index.php можно просто получить $_SERVER["REQUEST_URI"] и всё
 

Savio

Новичок
ну так и я об этом. что он не может быть в курсе моего ЧПУ. поэтому и лепит 404 в логах. на работу самого сайта ясное дело жто не распространяется ни каким образом, просто плохо при анализе логов, верней нечего анализировать, везде 404
 

Beavis

Banned
Savio
у вас проблемы с пониманием русского языка

Автор оригинала: Beavis
mod_rewrite - это модуль апача. как он может быть не в курсе? не пишите чушь
Автор оригинала: Savio
ну так и я об этом. что он не может быть в курсе моего ЧПУ
 

phprus

Moderator
Команда форума
Savio
ну так и я об этом. что он не может быть в курсе моего ЧПУ.
Почему он не в курсе? mod_rewrite - это модуль апача, по этому настройки этого модуля - это настройки самого апача. Те сервер знает, что такие урлы являются псевдонимами и ни каких 404-х ошибок не происходит.

Ты наверное видел ЧПУ через использование ErrorDocument в настройках apache - так вот это НЕ ПРАВИЛЬНЫЙ метод и он действительно порождает кучу проблем, одна из которых замусоривание логов.
 
Сверху