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

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

27.04.2011, 23:43. Просмотров 4260. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.04.2011, 23:43
Ответы с готовыми решениями:

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

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

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

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

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

Код
<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
507 / 357 / 13
Регистрация: 12.03.2012
Сообщений: 1,896
15.04.2012, 13:49 3
Где хранить все это ? MySql таблица ?
Как подгружать?
В каком направлении двигаться ?
Паттерн FrontController.
Имеем роутер и правила к нему(роуты).
В коде.
Плюс .htaccess выше дали уже.
0
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 817
20.04.2012, 12:29 4
У меня так. Есть выше представленный 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
629 / 438 / 67
Регистрация: 19.09.2012
Сообщений: 1,633
14.10.2013, 15:04 5
Цитата Сообщение от Василий Макогон Посмотреть сообщение

Во 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 6
koza4ok, ТУТ Я ВСЕ РАСПИСАЛ - http://www.phpinfo.su/articles/practice/chpu_na_php.html
1
629 / 438 / 67
Регистрация: 19.09.2012
Сообщений: 1,633
14.10.2013, 15:43 7
Благодарен что откликнулись....
0
Заблокирован
18.10.2013, 07:10 8
Цитата Сообщение от Mаксим Д. Посмотреть сообщение
фиксить файлы .htacсess mod rewrite не предлагать...
А тем и кончилось. Потому что анальные методы по-другому не работают. Когда в .htaccess появляются имена таблиц и полей в которые надо превратить несуществующий урл, сразу возникает вопрос: а при чем тут CMS и MVC если все делается вручную администратором?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.10.2013, 07:10

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

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

Создание дружественных адресов URL
Добрый день Пытаюсь на сайте с помощью mod_rewrite переделать URL. RewriteRule...

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

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


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.