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

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

27.04.2011, 23:43. Показов 4857. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru