Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

MVC и mod_rewrite

347
07 ноября 2012 года
Maniak
319 / / 05.11.2005
Есть движок сайта построенный по парадигме MVC. Проблема в том что в шаблоне дизайна если указывать не абсолютные ссылки, то путь получается некорректный, покажу ниже на примере.
1) заходим по адресу http://www.site.com/art/
2) Роут настроен так что art - контроллер.
В результате в ШАБЛОНЕ если указывать неполные пути (картинки или *.css), то результирующая ссылка получается http://www.site.com/art/css/styles.css, а должна быть http://www.site.com/css/styles.css. Почему так происходит?

Шаблон дизайна находится в каталоге app/views
настройки .htaccess
 
Код:
RewriteEngine On
#RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
1
07 ноября 2012 года
kot_
7.3K / / 20.01.2000
а причем тут мод_рерайт? Если ты же сам некорректно обрабатываешь ссылку?
366
08 ноября 2012 года
int
668 / / 30.03.2005
Пиши ../css/style.css
347
08 ноября 2012 года
Maniak
319 / / 05.11.2005
Цитата: kot_
а причем тут мод_рерайт? Если ты же сам некорректно обрабатываешь ссылку?


я ссылку никак не обрабатываю она жестко забита в шаблоне. как сделать так что бы даже с учетом контроллера и экшена в урле, система начинала отсчет с корневого каталога?

347
08 ноября 2012 года
Maniak
319 / / 05.11.2005
Цитата: int
Пиши ../css/style.css


потом добавится экш и надо будет писать ../../css/styles.css? не, так не пойдет.

4
08 ноября 2012 года
mike
3.7K / / 01.10.2002
А абсолютные пути нельзя использовать? /css/styles.css
1
08 ноября 2012 года
kot_
7.3K / / 20.01.2000
Цитата: Maniak
Цитата: kot_
а причем тут мод_рерайт? Если ты же сам некорректно обрабатываешь ссылку?


я ссылку никак не обрабатываю она жестко забита в шаблоне. как сделать так что бы даже с учетом контроллера и экшена в урле, система начинала отсчет с корневого каталога?


Слушай, давай не будим тупить, а?
Если действительно "она жестко забита в шаблоне" - то тогда все вообще очень просто - забиваешь нужную тебе, и вуаля, PROFIT! :)
Но на самом деле в "движке" существует класс/функция - задача которой - сформировать необходимый урл/отдать нужный контент.
Все что тебе нужно - унаследовать от этого класса (либо перегрузить функцию) - обработать ссылку твоего типа - и передать управление далее системе. По крайней мере так работает большинство нормальных систем. Если же ты столкнулся с ненормальной системой - то в любом случае тебе нужно найти механизм формирования урла, а уже исходя из этого можно что либо советовать. Но в любом случае мод_рерайт тут не причем - его задача - передать управление на index.php если запрошенный урл - не файл и не директория.
И кстати - абсолютный путь должен вполне спокойно открываться, если дополнительно конечно не закрыто в .htaccess.

420
10 ноября 2012 года
Fobos
197 / / 10.03.2006
Можно прописать в .htaccess такую строку:

RewriteRule ^(.*)css/styles.css$ /css/styles.css

Правда это наверное изврат, но работать должно.
347
11 ноября 2012 года
Maniak
319 / / 05.11.2005
если взять к примеру joomla, то в шаблоне точно так же можно указывать относительные пути - images/img1.jpg, css/styles.css и т.д. и какой бы не был урл http://www.joomla.ru/controller/action/parametr/100 все равно картинки и css подключаться нормально с точкой отсчета от корня сайта http://www.joomla.ru/images/img1.jpg, а не http://www.joomla.ru/controller/action/parametr/100/images/img1.jpg

И в шаблоне никто не использует joomla::Route('images/img1.jpg')... почему там это работает нормально?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог