Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Apache

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Разбор ЧПУ - из cat/art/?a=10&b=10 в cat/art/10/10/

Сообщения:  [1-6] 

 
 автор: vbps   (28.06.2007 в 17:25)   письмо автору
 
   для: Zilog   (28.06.2007 в 00:51)
 

помоему не принципеально

если конструкция ссылки для этой ветки смотрится так то:


RewriteRule ^([0-9]*)/([0-9]*)/$ cat/art/?a=$1&b=$2


то получим


10/10/ без всяких cat/art/, ну а если всетаки нужно и cat/art/ подставь его после символа ^

   
 
 автор: Zilog   (28.06.2007 в 00:51)   письмо автору
 
   для: Ziq   (27.06.2007 в 22:02)
 

>У вас уже есть реализация ЧПУ и возникли проблемы или вы пока только в теории размышляете? Если есть, то приложите файл .htaccess
>
>Не очень понятно: что именно вызывает проблему? Пример приведите что ли.f



ErrorDocument 404 /index404.php
ErrorDocument 401 /index404.php

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>



Реализация ЧПУ есть. Проблема в следующем.
Алгоритм разбора таков.

Получая в index.php адресную строку из браузера, я начинаю её разбирать от корня и до конца, на каждом шаге смотря в базу, есть такое или нет. Если нет - 404.
Проблема возникает при использовании переменных - когда разбор доходит до них, по умолчанию он вопринимает просто как часть адреса, соответственно тоже получаем 404.

проблема в том, что бы получить корректную обработку несуществующих адресов, и передачу параметров через адресную строку. В целом - как эти две вещи впихнуть в алгоритм разбора.

база имеет вид:
id, parent_id, url, где url содержит тектовый индентификатор - часть пути, например 'news/'

Да, при открытии получается несколько лишних запросов к базе, но сейчас меня это мало волнует - хочу сперва разобраться с логикой, а потом уже можно заниматься оптимизацией.

Вкратце - алготим мой таков: поучаем 1 сегмент, находим первую запись с таким текстовым идентификатором, запоминаем его id. Берем следующий сегмент, ищем в базе запись с parent_id=id, и аналогичным текстовым индентификатором. И так до последенего сегмента адресной строки. В итоге получаем id раздела, который передаем функции формирования контента.
Вот и получается, что скрипт - как трактор, берёт всё подряд - потому как непонятно, что из себя представляет сегмент - адрес или переменную.

   
 
 автор: Ziq   (27.06.2007 в 22:02)   письмо автору
 
   для: Zilog   (27.06.2007 в 19:31)
 

У вас уже есть реализация ЧПУ и возникли проблемы или вы пока только в теории размышляете? Если есть, то приложите файл .htaccess

Не очень понятно: что именно вызывает проблему? Пример приведите что ли.

   
 
 автор: Zilog   (27.06.2007 в 19:31)   письмо автору
 
   для: Richard Ferlow   (27.06.2007 в 18:12)
 

>Нет, адрес будет...вернее надо чтобы был
>
>cat/art/a/10/b/10/

Странно, а почему я у других подобного не видел?

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

интересно послушать тех, кто делал ЧПУ своими рукамии и как решил эту проблему?

   
 
 автор: Richard Ferlow   (27.06.2007 в 18:12)   письмо автору
 
   для: Zilog   (27.06.2007 в 17:20)
 

Нет, адрес будет...вернее надо чтобы был

cat/art/a/10/b/10/

   
 
 автор: Zilog   (27.06.2007 в 17:20)   письмо автору
 
 

Граждане, решил сделать ЧПУ. Все хорошо, но мучает один вопрос, связанный с передачей переменных через адресную строку. В старом варианте передача имела ввид

..cat/art/?a=10&b=10


В новом, я так понимаю должна иметь вид


..cat/art/10/10/


Но тут возникает проблема - как мне отличить при разборе кусок строки - это часть адреса или это переменная? Если скрипт воспринимает это (..10/10/) как часть адреса - то он говорит 404.

Как понять, где кончается адрес и где начинаются переменные, что бы корректно обрабатывать 404 ошибку и так же корректно считывать переменные?

Варант, с вводом спецсимволов - неподходит, иначе теряется весь смысл ЧПУ.

Буду премного благодарен за ваши соображения по этом вопросу!

зы. Приношу извенения, если слишком запутанно обьяснил.

   

Сообщения:  [1-6] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования