Mod_rewrite. Снова вопросы.

Serguitar

Новичок->продвинутый
Mod_rewrite. Снова вопросы.

Всем доброго времени суток!
Прошу не посылать меня в поиск, я честно и добросовестно прочёл всё, что он мне выдал про ентот модуль.
В принципе я и ответ-то нашёл похожий несколько раз, но у меня не работает. Дело в следующем:
Есть страница index.php. Ей передаются переменные $a, $b, $c, по отдельности, либо все вместе, либо попарно. В зависимости от того, какие переменные пришли (и сколько их) выполняется та или иная функция.
Фактически УРЛ может быть 3 видов:
1. mysite/index.php?a=1
2. mysite/index.php?a=1&b=2
3. mysite/index.php?a=1&b=2&c=3
Хочу преобразовать в:
1. mysite/1/
2. mysite/1/2/
3. mysite/1/2/3
Как это сделать?
и ещё.
если я пишу
RewriteRule ^(*.)/$ index.php?a=$1, то всё без проблем работает, но зато при наличии
RewriteEngine on
Options +FollowSymlinks
RewriteCond %{REQUEST_FILENAME} !.(css)|(jpg)|(png)|(gif)$ почему-то всё равно режутся картинки
Пробовал и по другому.

RewriteCond %{REQUEST_URI} !^(.*)[gif|jpg|css|png]$

Всё равно режет.

Вот, собственно, и два вопроса у меня.
1. Почему режутся картинки?
2. Как правильно изобразить правило при наличии тех или иных переменных?
Спасибо.
 

StUV

Rotaredom
Serguitar
у тебя a,b,c - фиксированные (заранее известные) имена переменных или нет ?
 

Groove

Новичок
Re: Mod_rewrite. Снова вопросы.

Автор оригинала: Serguitar
Вот, собственно, и два вопроса у меня.
1. Почему режутся картинки?
2. Как правильно изобразить правило при наличии тех или иных переменных?
Спасибо.
Попробуй так:

файл .htaccess
PHP:
RewriteEngine on
Options +FollowSymLinks

## Если каталог существует, то не изменяем URL
## и завершаем обработку
##
RewriteCond     %{REQUEST_FILENAME}    -d
RewriteRule     .*      -       [L]

## Если файл существует, то не изменяем URL
## и завершаем обработку
##
RewriteCond     %{REQUEST_FILENAME}    -f
RewriteRule     .*      -       [L]

## Обрабатываем URL вида /mysite/1/ или mysite/1
##
RewriteRule     ^mysite/([0-9]+)[/]?$                   /index.php?a=$1 [L,QSA]

## Обрабатываем URL вида /mysite/1/2/ или mysite/1/2
##
RewriteRule     ^mysite/([0-9]+)/([0-9]+)[/]?$                   /index.php?a=$1&b=$2 [L,QSA]

## Обрабатываем URL вида /mysite/1/2/3/ или mysite/1/2/3
##
RewriteRule     ^mysite/([0-9]+)/([0-9]+)/([0-9]+)[/]?$                   /index.php?a=$1&b=$2&c=$3 [L,QSA]
и сам файл index.php
PHP:
<?
print_r($_GET);
?>
Далее по образу и подобию...

-~{}~ 11.05.05 13:04:

StUV
>>Фактически УРЛ может быть 3 видов:
 

Serguitar

Новичок->продвинутый
Groove
Честно говоря вот это
## Обрабатываем URL вида /mysite/1/ или mysite/1
##
RewriteRule ^mysite/([0-9]+)[/]?$ /index.php?a=$1 [L,QSA]

## Обрабатываем URL вида /mysite/1/2/ или mysite/1/2
##
RewriteRule ^mysite/([0-9]+)/([0-9]+)[/]?$ /index.php?a=$1&b=$2 [L,QSA]

## Обрабатываем URL вида /mysite/1/2/3/ или mysite/1/2/3
##
RewriteRule ^mysite/([0-9]+)/([0-9]+)/([0-9]+)[/]?$ /index.php?a=$1&b=$2&c=$3 [L,QSA]
я сам догнал. Просто с картинками ж... получалась. Но всё равно огромное спасибо.
А что значит вот это?
Мне так, для самообразования.

Groove
Проверил. Всё равно картинки режет. И таблицы стилей.
Хрен знает в чём дело.
 

Groove

Новичок
http://www.egoroff.spb.ru/portfolio/apache/mod_rewrite.html

'last|L' (последнее правило)
Остановить процесс преобразования на этом месте и не применять больше никаких правил преобразований. Это соответствует оператору last в Perl или оператору break в языке C. Используйте этот флаг для того, чтобы не преобразовывать текущий URL другими, следующими за этим, правилами преобразований. К примеру, используйте это для преобразования корневого URL из ('/') в реальный, например, '/e/www/'.

'qsappend|QSA' (добавлять строку запроса)
Этот флаг указывает механизму преобразований на добавление а не замену, строки запроса из URL к существующей, в строке подстановки. Используйте это когда вы хотите добавлять дополнительные данные в строку запроса с помощью директив преобразований.

Вдруг ты захочешь еще и пейджинг прикрутить...
/mysite/1/2/3./?page=123

-~{}~ 11.05.05 15:31:

Serguitar
а они у тебя точно лежат где надо?
 

Serguitar

Новичок->продвинутый
Groove
Понятно. Спасибо за ссылку.
а они у тебя точно лежат где надо?
Обижаешь! Ведь при mysite/index.php?a=1 все картинки грузятся, а вот при mysite/1/ нифига...
Зато если при mysite/1/ в <img src= добавить ../, то всё опять грузится. Короче, при реврайте апач ищет картинки во внешней от 1/ директории. А на то, что аксессе написано ему по...
 

Groove

Новичок
как же ты так попал то :)

<img src="/images/image1.jpeg">
<link rel="StyleSheet" href="/public.css">
конечно же

честно говоря даже не подумал, что у тебя могло быть иначе, по инерции думал как у меня...
 

Serguitar

Новичок->продвинутый
Groove
;-) Век живи, век учись!..
Не сталкивался, откуда мне было знать? Теперь знаю. Спасибо тебе.
 

Serguitar

Новичок->продвинутый
Groove
Во-во! Это правильно. А про пригодность не беспокойся! В поискевидал, когда искал по своему вопросу, что одно и тоже столько раз спрашивают, упасть не встать! А так ткнул очередного носом -и готово!
До новых встреч.
 
Сверху