помогите с mod_rewrite

Kirill

Новичок
помогите с mod_rewrite

Нужно чтобы все запросы, кроме картинок, js и css переписывали на index.php:

#JS
RewriteCond %{REQUEST_URI} js/(.*)\.js$
RewriteRule js/(.*)\.js$ js/$1.js

#css, images
RewriteCond %{REQUEST_URI} templates/(.+)\.(css|jpeg|gif)$
RewriteRule templates/(.+)\.(css|jpeg|gif)$ templates/$1\.$2

#other
RewriteCond %{REQUEST_URI} !templates/(.+)\.(css|jpeg|gif)$
RewriteCond %{REQUEST_URI} !js/(.*)\.js$
RewriteRule ^.*$ index.php

Все работает, но:
Если запросы к css ведут в правильное место то все тип топ:
/script/templates/default/css/basic.css - нормально отдает Css
Если же запрос css проходит проверку, но фактически такой директории не существует - ошибка 500:
/script/templates/defaultcss/basic.css - урл подходит под условия 2 правила но директории не существует - в итоге ошибка 500.

Подскажите как поправить?
В логах max redirects
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Нафика вся эта петрушка?
Чем не подошло


RewriteCond %{REQUEST_FILENAME} !-f # - запросы к существующим файлам
RewriteCond %{REQUEST_FILENAME} !-d # - запросы к существующим директориям

RewriteRule (.*)$ index.php/$1 [QSA]
 

Anarki

Новичок
Тут думаю, можно вообще без mod_rewrite обойтись и сделать в скрипте php. Но можно еще не значит, что нужно.
 

Kirill

Новичок
Нафика вся эта петрушка?
Это для скрипта каталога, скрипт может устанавливаться в поддиректории сайта - чтобы не было проблем с шаблонами и найтройкой у юзеров, т.е.:
если установлено в диреторию сайта catalog, то при навигации по каталогу пути будут вида:
/cataog/item/25/
соответственно, запросы к css будут (т.к. пути не абсолютные):
/cataog/item/25/templates/default/css/main.css


Тут думаю, можно вообще без mod_rewrite обойтись и сделать в скрипте php. Но можно еще не значит, что нужно.
нуда
 

cDLEON

Онанист РНРСlub
а что мешает сделать путь на КСС обсолютным ?
И убрать проверку на существование директории?
 

Kirill

Новичок
каталог будет для юзеров - залил - работает, чтобы не нужно было ничего править ни в каких конфигах. залил в поддиректорию - работает в поддиректории, залил в корень - работает в корне.

Если делать путь к css абсолютным - такого не будет (ещё же ЧПУ при навигации)
 

dimagolov

Новичок
Kirill, ты не понял про css. ты делаешь ОДНУ директорию для CSS и всегда абсолютно откуда угодно ссыаешься на них. никакой ЧПУ для них будет не нужен.
 

Kirill

Новичок
попробую объяснить на пальцах:

Пользователь установил скрипт в директорию catalog своего сайта:
Абсолютный путь до CSS:
/catalog/templates/default/basic.css
Абсолютный путь до картинки:
/catalog/templates/default/images/background.jpg

В CSS нельзя прописать так:
background: url(/catalog/templates/default/images/background.jpg)
- тогда если юзер установит в директорию отличную от catalog - картикни и стили не отобразятся
Нужно прописывать так:
background: url(templates/default/images/background.jpg)
- тогда все будет работать (rewrite правила в начале топика)

У меня вопрос как залечить 500 ошибку (см. начало топика)

-~{}~ 05.07.08 15:36:

+ навигация по каталогу вида:

directory/1/
item/25 etc

-~{}~ 05.07.08 15:37:

ты делаешь ОДНУ директорию для CSS и всегда абсолютно откуда угодно ссыаешься на них.
Абсолютно не получится как я уже объяснил выше
 

dimagolov

Новичок
В CSS нельзя прописать так:
background: url(/catalog/templates/default/images/background.jpg)
- тогда если юзер установит в директорию отличную от catalog - картикни и стили не отобразятся
бред. все работает и с абсолютными путями, если отключить не нужный в этом случае ЧПУ
 

Kirill

Новичок
бред. все работает и с абсолютными путями, если отключить не нужный в этом случае ЧПУ
хорошо, как тогда прописать путь к картинке в css?

/templates/default/images/background.jpg так?

а если скрипт будет установлен в поддиреторию:
/sub/sub/sub/ ?

Напишите пример, а то только голые утверждения
 

dimagolov

Новичок
если путь абсолютный, то пофигу где скрипт, где css, где картинки, путь то абсолютный, от корня сайта.

что писать в пример? отключи свой реврайт и убедись
 

Kirill

Новичок
я понимаю что можно написать абсолютный путь от корня сайта. Но это возможно когда известен этот самый путь (например проект для заказчика и пр.)

Я говорю о ситуации когда АБСОЛЮТНЫЙ ПУТЬ НЕ ИЗВЕСТЕН.
Это правило нужно для скрипта каталога (опен сорс) - пользователь может установить его в ЛЮБУЮ ПОДДИРЕКТРИЮ НА СВОЕМ САЙТЕ - т.е. абсолютный путь НЕ ИЗВЕСТЕН.
 

dimagolov

Новичок
пользователь может установить его в ЛЮБУЮ ПОДДИРЕКТРИЮ НА СВОЕМ САЙТЕ - т.е. абсолютный путь НЕ ИЗВЕСТЕН.
для этого делается файл конфигурации с путем проекта относительно корня сайта и везде где это надо, к нему обращаемся.
 

kruglov

Новичок
Что такого можно указать в конфиге, чего сам php не сможет узнать, ну, к примеру, через __FILE__ ?
 

Kirill

Новичок
а в css файле как обратиться к параметру конфигурации?

Зачем усложнять жизнь рядовому пользователю, когда можно написать правило реврайта?

Я не спрашивал как это обойти, я просил помочь написать правило.

-~{}~ 05.07.08 18:06:

если уж на то пошло - можно вообще отрубить реврайт, сделать навигацию вида index.php?category=34&product=56 :)
 
Сверху