Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.81/26: Рейтинг темы: голосов - 26, средняя оценка - 4.81
0 / 0 / 0
Регистрация: 26.09.2010
Сообщений: 37

Организация URL адресов

27.04.2011, 23:43. Показов 4867. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.
Столкнулся с такой проблемой ...
Как правильно организовать URL ?
Допустим есть сайт ... www.site.com
есть меню menu1, menu2, menu3, menu 4 и т.д.

Меня интересует, как сделать так, чтобы при нажатии например на меню пользователь видел урл вида
www.site.com/menu1/ ....

Или человек выбирает какие-то категории товаров или создает их в админке и сразу формируется норм URL www.site.com/products/compjuter .... например ...

фиксить файлы .htacсess mod rewrite не предлагать...
Может класс какой написать, который будет наращивать URL ? Где хранить все это ? MySql таблица ?
Как подгружать?
В каком направлении двигаться ?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.04.2011, 23:43
Ответы с готовыми решениями:

MVC: организация и обработка адресов для новостей
Добрый вечер! Допустим, есть контроллер news. У него есть два метода, list и one. Первый выводит все данные из MySQL с постраничной...

Компонент добавления URL адресов в базу данных.
Прошу помощи с PHP кодом У меня есть компонент для добавления пользователем URL адресов в базу данных. Функция компонента позволяет...

Организация url адресов в CMS
Здравствуйте друзья! Помогите, пожалуйста, заполнить пробелы в теоретических знаниях. Меня интересует вопрос, как в CMS реализовывают...

7
 Аватар для Haroutweb
0 / 0 / 0
Регистрация: 22.11.2010
Сообщений: 30
15.04.2012, 13:38
в htaccess надо написать

Code
1
2
3
4
5
6
7
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
        RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ www.site.com/index.php/$1 [L]
</IfModule>
0
508 / 358 / 13
Регистрация: 12.03.2012
Сообщений: 1,896
15.04.2012, 13:49
Где хранить все это ? MySql таблица ?
Как подгружать?
В каком направлении двигаться ?
Паттерн FrontController.
Имеем роутер и правила к нему(роуты).
В коде.
Плюс .htaccess выше дали уже.
0
 Аватар для Василий Макогон
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 817
20.04.2012, 12:29
У меня так. Есть выше представленный htaccess, который все запросы к несуществующим урлам перенаправляет в index.php в GET переменную _path
Bash
1
2
3
4
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 вызывается сложный механизм frontController-a, но идея простая. Имеем файл со всеми виртуальными URL-адресами, точнее, их вариации описанные с помощью регулярных выражений. Выглядит он примерно так:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php
return array
(
    // Frontend
    array( 'pattern' => '~^/$~',
           'module' => 'index',
           'controller' => 'index'
         ),
    array( 'pattern' => '~^/categories/?$~',
           'module' => 'category',
           'controller' => 'frontend-categories-list',
         ),
    array( 'pattern' => '~^/categories(/[a-z0-9_/\-]+/)$~',
           'module' => 'advert',
           'controller' => 'frontend-category-list',
           'aliases' => array('category_url'),
         ),
    array( 'pattern' => '~^/categories(/[a-z0-9_/\-]+/)(.+)\.xhtml$~',
           'module' => 'advert',
           'controller' => 'view',
           'aliases' => array('category_url', 'id'),
         ),
    array( 'pattern' => '~^/advert/([0-9]+)\.xhtml$~',
           'module' => 'advert',
           'controller' => 'view',
           'aliases' => array('id'),
         ),
    array( 'pattern' => '~^/add\.xhtml$~',
           'module' => 'advert',
           'controller' => 'frontend-add',
         )
....
Во frontController-е запускается механизм парсинга текущего адреса, который через mod rewrite пришел в переменной $_REQUEST['_path']. Механизм выглядит примерно так:

PHP
1
2
3
4
5
6
7
if (!$this->compareRequestWithUriRoutes($uri)) // сначала ищем совпадения в карте router's
        {
            if (!$this->compareRequestWithStandartUriMap($uri)) // если там не найдено, пробуем разбить URL по принципу /контроллер/действие/имя1/значение1/имя2/значение2/
            {
                 // обработка 404 ошибки 
            }
        }
1
 Аватар для koza4ok
632 / 440 / 67
Регистрация: 19.09.2012
Сообщений: 1,632
14.10.2013, 15:04
Цитата Сообщение от Василий Макогон Посмотреть сообщение

Во frontController-е запускается механизм парсинга текущего адреса, который через mod rewrite пришел в переменной $_REQUEST['_path']. Механизм выглядит примерно так:

PHP
1
2
3
4
5
6
7
if (!$this->compareRequestWithUriRoutes($uri)) // сначала ищем совпадения в карте router's
        {
            if (!$this->compareRequestWithStandartUriMap($uri)) // если там не найдено, пробуем разбить URL по принципу /контроллер/действие/имя1/значение1/имя2/значение2/
            {
                 // обработка 404 ошибки 
            }
        }
Приветсвую...Можно посмотреть логику frontController?Представте код пожалуйста...

Я пытался сделать след.образом:
PHP
1
RewriteRule ^(.*)$ index.php?param=$1 [L]

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
$route=$_GET['param'];  
 
 $arr=array(
array( 'pattern' => '/^/$/',
           'module' => 'index',
           'controller' => 'index'
         ) ,
.....
)
 
 for($i=0;$i<count($arr);$i++){
     
     if(preg_match($arr[$i]['pattern'],$route) ){
         
         $current_module=$arr[$i]['module'];
         $current_controller=$arr[$i]['controller'];
         break;
     }
 }
 
 if(!isset($current_module)){
     $current_module='default';
     
 }
 
  if(!isset($current_controller)){
     $$current_controller='default';
     
 }
 var_dump($current_module);
 var_dump($current_controller);


Но мне этот код вызывает отвращение...Подскажите как сделать лучше?
0
 Аватар для Василий Макогон
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 817
14.10.2013, 15:41
koza4ok, ТУТ Я ВСЕ РАСПИСАЛ - http://www.phpinfo.su/articles... a_php.html
1
 Аватар для koza4ok
632 / 440 / 67
Регистрация: 19.09.2012
Сообщений: 1,632
14.10.2013, 15:43
Благодарен что откликнулись....
0
Заблокирован
18.10.2013, 07:10
Цитата Сообщение от Mаксим Д. Посмотреть сообщение
фиксить файлы .htacсess mod rewrite не предлагать...
А тем и кончилось. Потому что анальные методы по-другому не работают. Когда в .htaccess появляются имена таблиц и полей в которые надо превратить несуществующий урл, сразу возникает вопрос: а при чем тут CMS и MVC если все делается вручную администратором?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.10.2013, 07:10
Помогаю со студенческими работами здесь

Сколько можно добавить URL адресов в свою созданную Группу URl?
Добрый день. Подскажите пожалуйста, сколько можно добавить URL адресов в свою созданную Группу URl? На купленной лицензии VS...

Смена URL адресов страниц
Имеется сайт (интернет-магазин) В индекс попал порядка месяца назад... постепенно дорабатывается. Захотелось установить ЧПУ на сайт....

Создание дружественных адресов URL
Добрый день Пытаюсь на сайте с помощью mod_rewrite переделать URL. RewriteRule ^(+)/?(*)/?(*)/?(*)/?$...

Запись url адресов в текстовый файл
Составила программу, которая находит в тексте предложения (ссылки), начинающиеся с href и заканчивающиеся кавычками и записывает их в...

Массовое удаление пути из url адресов
Доброго времени суток! Помогите с написанием небольшого скрипта Нужно почистить массово адреса: из кучи подобных адресов ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru