|
|
|
|
|
для: Zilog
(28.06.2007 в 00:51)
| | помоему не принципеально
если конструкция ссылки для этой ветки смотрится так то:
RewriteRule ^([0-9]*)/([0-9]*)/$ cat/art/?a=$1&b=$2
|
то получим
10/10/ без всяких cat/art/, ну а если всетаки нужно и cat/art/ подставь его после символа ^
|
| |
|
|
|
|
|
|
|
для: 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 раздела, который передаем функции формирования контента.
Вот и получается, что скрипт - как трактор, берёт всё подряд - потому как непонятно, что из себя представляет сегмент - адрес или переменную. | |
|
|
|
|
|
|
|
для: Zilog
(27.06.2007 в 19:31)
| | У вас уже есть реализация ЧПУ и возникли проблемы или вы пока только в теории размышляете? Если есть, то приложите файл .htaccess
Не очень понятно: что именно вызывает проблему? Пример приведите что ли. | |
|
|
|
|
|
|
|
для: Richard Ferlow
(27.06.2007 в 18:12)
| | >Нет, адрес будет...вернее надо чтобы был
>
>cat/art/a/10/b/10/
Странно, а почему я у других подобного не видел?
Кроме того, допустим так, получается мне каждый отрезок надо проверять на принадлежность к переменным, которых, получается должно быть определенное количество и их надо будет хранить в определенном месте - но мне кажется это не выход.
интересно послушать тех, кто делал ЧПУ своими рукамии и как решил эту проблему? | |
|
|
|
|
|
|
|
для: Zilog
(27.06.2007 в 17:20)
| | Нет, адрес будет...вернее надо чтобы был
cat/art/a/10/b/10/ | |
|
|
|
|
|
|
| Граждане, решил сделать ЧПУ. Все хорошо, но мучает один вопрос, связанный с передачей переменных через адресную строку. В старом варианте передача имела ввид
В новом, я так понимаю должна иметь вид
Но тут возникает проблема - как мне отличить при разборе кусок строки - это часть адреса или это переменная? Если скрипт воспринимает это (..10/10/) как часть адреса - то он говорит 404.
Как понять, где кончается адрес и где начинаются переменные, что бы корректно обрабатывать 404 ошибку и так же корректно считывать переменные?
Варант, с вводом спецсимволов - неподходит, иначе теряется весь смысл ЧПУ.
Буду премного благодарен за ваши соображения по этом вопросу!
зы. Приношу извенения, если слишком запутанно обьяснил. | |
|
|
|
|