Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Как сделать ЧПУ?
Форумы портала PHP.SU » PHP » Программирование на PHP » Как сделать ЧПУ?

Страниц (2): [1] 2 »
 

1. sofck - 20 Декабря, 2010 - 13:24:18 - перейти к сообщению
Нужна помощь в создании ЧПУ.
Вообщем скажем так. У меня есть что то вроде своего движка, может сильно сказал, но мне так проще) Вся структура сайта на нем строется деревидно, хлебные крошки и т.д. А в адресной строке все страницы отображаются как ?c=Number, у каждой страницы может быть неограниченное кол-во элементов и каждый из них отображается как ?c=Number&ci=Number. Ну а имя в латинице для страницы или элементы может формироваться при создании или переименовывании простой функцией перевода русского в транслит.
Пример.
Скажем есть страница "Контакты" - kontakti. ?c=4
У нее есть элементы "Офис1" и "Офис2" - ?c=4&ci=1 и ?c=4&ci=2 соответственно.(office1 и office2)
Ну и скажем есть дочерняя страница для Контакты, скажем - Дополнительно ?c=5 (dopolnitelno)

Как сделать так что бы вводя в адресной строке(site.ru/kontakti) грузился ?c=4
А если (site.ru/kontakti/office1) то грузися ?c=4&ci=1
Ну а если ввести (site.ru/kontakti/dopolnitelno) то грузиться ?c=5

Ну само собой название для ЧПУ будут браться с mysql

Вообще нужен не просто совет, а желательно рабочий пример. Готов материально вознаградить в разумных пределах!!!

Спасибо за то что прочли!
2. OrmaJever - 20 Декабря, 2010 - 14:37:25 - перейти к сообщению
sofck пишет:
Скажем есть страница "Контакты" - kontakti. ?c=4
У нее есть элементы "Офис1" и "Офис2" - ?c=4&ci=1 и ?c=4&ci=2 соответственно.(office1 и office2)
Ну и скажем есть дочерняя страница для Контакты, скажем - Дополнительно ?c=5 (dopolnitelno)

Я не нашёл здесь никакой связи Однако опишите подробнее url и как нужно.
_http://ru.wikipedia.org/wiki/ЧПУ_(интернет)
3. sofck - 20 Декабря, 2010 - 14:52:51 - перейти к сообщению
все страницы имеют адрес ?c=N
все элементы относящиеся к определенной странице имею адрес ?c=2&ci=N, ?c=2&ci=N
у каждой страницы или элемента в бд храниться значение для чпу, к примеру uri
Получая из $_GET значение ?c или ?с&сi формируются "крошки"
Как связать mod_rewrite c mysql.
(не знаю как объяснить)

может куда выложить пример сайта для нагядности?
4. OrmaJever - 20 Декабря, 2010 - 16:05:43 - перейти к сообщению
sofck пишет:
Как связать mod_rewrite c mysql.

mod_rewrite это же просто сылка которую водит пользователь. А бд на строноне сервера может взять параметры из масива $_GET

CODE (htmlphp):
скопировать код в буфер обмена
  1. RewriteEngine on
  2. RewriteRule ^имя_файла/([0-9]+)/$ имя_файла.php?c=$1 [L]
  3. RewriteRule ^имя_файла/([0-9]+)/([0-9]+)$ имя_файла.php?c=$1&ci=$2 [L]

http://site.ru/имя_файла/2/5
$_GET['c'] = 2
$_GET['ci'] = 5
5. JustUserR - 20 Декабря, 2010 - 16:56:54 - перейти к сообщению
sofck В качестве возможного варината осуществляющего решения приведенной задачи допустимо создание специализированного PHP-скрипта - обеспечивающего выполнение реальный действий по обработке пользовательских URL-запросов предоставленных в заданному виртуальному пути за счет примененеия системы alias-инга и действенного перенаправления - в таком случае возможна огранизация контроля выполнениемых web-элементов в рамках логики PHP-приложения
6. sofck - 20 Декабря, 2010 - 16:57:18 - перейти к сообщению
OrmaJever пишет:
sofck пишет:
Как связать mod_rewrite c mysql.

mod_rewrite это же просто сылка которую водит пользователь. А бд на строноне сервера может взять параметры из масива $_GET

CODE (htmlphp):
скопировать код в буфер обмена
  1. RewriteEngine on
  2. RewriteRule ^имя_файла/([0-9]+)/$ имя_файла.php?c=$1 [L]
  3. RewriteRule ^имя_файла/([0-9]+)/([0-9]+)$ имя_файла.php?c=$1&ci=$2 [L]

http://site.ru/имя_файла/2/5
$_GET['c'] = 2
$_GET['ci'] = 5


Да так то можно, но немного не то,
прикол в том что имя исполняющего файла одно и тоже.
И нужно что бы если человек пишет site.ru/kontakti/ то грузился index.php?c=(значение id для записи где uri = kontakti. Ну а если нет то шибка.
и так до неограниченного вложения.
7. OrmaJever - 20 Декабря, 2010 - 17:04:15 - перейти к сообщению
sofck пишет:
И нужно что бы если человек пишет site.ru/kontakti/ то грузился index.php?c=(значение id для записи где uri = kontakti.

в url должно быть хоть чтото общее. Как я понял
site.ru/kontakti/ => index.php?c=kontakti ?
8. JustUserR - 20 Декабря, 2010 - 17:10:56 - перейти к сообщению
sofck пишет:
И так до неограниченного вложения
Использование предполагаемой программного метода анализа указанных пользовалеем URL-адерсов при осуществлении запроса к заданному обрабатываемому объекту виртуальной директории - включает возможность применения произвольных функциональных алгоримтов PHP-приложения для проведения соответствующего анализа
9. sofck - 20 Декабря, 2010 - 17:56:15 - перейти к сообщению
Да нет общего.

Возможно ли тогда как нить реализовать


site.ru/раздел -> обработчик проверяет в бд соответствует ли раздел какой нибудь записи(скаже id=3)
и тогда грузит страницу ?c=3, но в адресной строке пишется site.ru/раздел
10. OrmaJever - 20 Декабря, 2010 - 18:01:02 - перейти к сообщению
sofck пишет:
Да нет общего.
это как ? Не понял
А как сервер должен понять что вывести? А?!
(Добавление)
sofck пишет:
site.ru/раздел -> обработчик проверяет в бд соответствует ли раздел какой нибудь записи(скаже id=3)
и тогда грузит страницу ?c=3, но в адресной строке пишется site.ru/раздел

оу дочитал и понял что нужно до конца дочитывать)
CODE (htmlphp):
скопировать код в буфер обмена
  1. RewriteEngine on
  2. RewriteRule ^([0-9a-z]+)/$ index.php?cat=$1 [L]


Зачем в index.php составляете запрос где будет
CODE (SQL):
скопировать код в буфер обмена
  1. WHERE `категория` = '$_GET['cat']'

Ну и если есть то открываем страницу с выбраным из базы параметром.
11. sofck - 20 Декабря, 2010 - 18:08:45 - перейти к сообщению
Так ладно. Чуть ближе к вечеру выложу пример структуры сайта. Думаю так будет понятней))
12. sofck - 20 Декабря, 2010 - 22:54:34 - перейти к сообщению
Ну вот выложил: regesh.ru
Сделал пару страничек для наглядности.
Вот для этого мне нужно ЧПУ.


ну кстати если использовать вместо ?c=number ---> ?c=name
то сделать чпу проще но что делать если

неограниченное кол-во вложений
(page1/page2/page3/ и т.д)
13. sofck - 21 Декабря, 2010 - 19:24:43 - перейти к сообщению
Кто нить может реально помочь?
14. OrmaJever - 21 Декабря, 2010 - 20:20:48 - перейти к сообщению
sofck пишет:
Кто нить может реально помочь?

Что не так? Вы можите зделать такой скрипт с простым url`ом ?
15. sofck - 21 Декабря, 2010 - 21:24:04 - перейти к сообщению
OrmaJever пишет:
sofck пишет:
Кто нить может реально помочь?

Что не так? Вы можите зделать такой скрипт с простым url`ом ?


Имеете ввиду что бы страницы отображались как ?c=name и ?сi=name
вместо числовых индификаторов?

Да могу.

 

Powered by ExBB FM 1.0 RC1