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

Форум PHP

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

 

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

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

тема: Как грамотно реализовать ЧПУ?

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

 
 автор: idel   (10.11.2012 в 13:40)   письмо автору
 
   для: idel   (07.11.2012 в 21:04)
 

Форум Wordpress

http://ru.forums.wordpress.org/topic/Цвет-всплывающего-меню

Интересно, как находится в таблице нужная тема. Ведь имя столбца может быть неуникальным, если тем действительно много. И вообще, есть ли смысл использовать кириллицу в URL?

  Ответить  
 
 автор: idel   (09.11.2012 в 17:57)   письмо автору
 
   для: cheops   (08.11.2012 в 23:38)
 

Никогда сам не пришел бы к этой идеи!
Спасибо. Попробую этот метод.

  Ответить  
 
 автор: cheops   (08.11.2012 в 23:38)   письмо автору
 
   для: idel   (08.11.2012 в 16:39)
 

В СУБД MySQL имеется оператор REGEXP, который позволяет искать соответствие регулярному выражению, поэтому вы помещаете в базу данных регулярное выражение, затем поступающий URL сравниваете с содержимым поля, где вы помещаете регулярное выражение, SELECT-запрос возвращает вам нужный.
Т.е. допустим лежит у вас в таблице регулярное выражение ^news/[0-9]*/?$ в поле mask. А от пользователя, через mod_rewrite поступает вам url вида news/423, тогда следующий запрос
SELECT
  *
FROM
  tbl
WHERE
  'news/423' 
REGEXP
  mask
вам вернет строку с ^news/[0-9]*/?$ (а там уже привязывайте модули, действия, хуки или что-то еще). Если же нужного регулярного выражения не будет найдено, то будет возвращено 0 строк и вы можете смело возвращать код 404.

  Ответить  
 
 автор: idel   (08.11.2012 в 16:39)   письмо автору
 
   для: cheops   (08.11.2012 в 07:44)
 

шаблоны помещают в базу данных под каждый модуль и ищут по таблице
Объясните пожалуйста подробнее.

  Ответить  
 
 автор: cheops   (08.11.2012 в 07:44)   письмо автору
 
   для: idel   (07.11.2012 в 21:04)
 

Обычно дальше тоже не мудрят, просто шаблоны помещают в базу данных под каждый модуль и ищут по таблице. Если будете создавать универсальные решения - они у вас лишнюю память/процессорное время будут потреблять. Если введете какую-то нотацию - она вас по рукам и ногам свяжет, потеряете в гибкости разработке и именования.

  Ответить  
 
 автор: idel   (07.11.2012 в 21:04)   письмо автору
 
 

Не стал мудрить с .htaccess:


DirectoryIndex index.php
RewriteEngine On
Options +FollowSymlinks
RewriteCond   %{REQUEST_FILENAME}       !-d
RewriteCond   %{REQUEST_FILENAME}       !-f
RewriteRule   ^(.*) index.php?%{QUERY_STRING}


Потом применяю код

$params = explode( '/', $_SERVER['REQUEST_URI'] );


Есть ли универсальный алгоритм для обработки запроса?

Например, страница может иметь следующий адрес
http://site.com/param1/param2/param3/param4/param5/page.html.

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

  Ответить  

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

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

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