Много правил mod_rewrite

Mishanja

Новичок
Много правил mod_rewrite

Доброй ночи!

Еще один вопрос по mod_rewrite.

Есть вот такие вот линки:

www.site.ru
www.site.ru/ru
www.site.ru/en
www.site.ru/ru/type1/
www.site.ru/ru/type2/
www.site.ru/ru/type1/page1/

и т.д.

Я пытаюсь их разобрать с помощью mod_rewrite на составляющие и передать в скрипт соотв. параметры,
но до сих пор смог родить только одно работающее правило:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)(ru|en)/(.*)$ $1?lang=$2$3&%{QUERY_STRING}

Это правило работает и в скрипт я получаю $_GET['lang']

Если я пишу правило для следующего параметра type

RewriteRule ^(.*)type(.*)/(.*)$ $1&t_id=$2$3&%{QUERY_STRING}

то получаю ошибку mod_rewrite: maximum number of internal redirects reached.

Далее мне надо разобрать остальные параметры:

Пробовал по-всякому, но не один работающий реврайт рул родить не смог.

Вот вопросы по теме:

1. Необходимо ли для каждого возможного REQUEST_URI писать свое правило или можно перезаписывать URI по частям не зависимо от остальных параметров?
2. Не могли бы вы пояснить мне где я ошибся, мочи (ударение на "о") уж нет.


Заранее благодарю.
 

Mishanja

Новичок
tf

работало до того, как я переделал все линки в скрипте, чтобы обрабатывать мод реврайтом следующие параметры

Как дать ему понять что если есть только ru то делаем ?lang=ru
Если есть ru/type1 то делаем ?lang=ru&t_id=1

и т.д.

вот где собака порылась
 

tf

крылья рулят
для начало ответь
1. (.*)(ru|en) что ты ловиш (.*)?
2. ты уверен что так надо?
RewriteRule ^(.*)type(.*)/(.*)$ $1&t_id=$2$3&%{QUERY_STRING}
может так?
RewriteRule ^(.*)type(.*)/(.*)$ ?$1&t_id=$2$3&%{QUERY_STRING}
 

Mishanja

Новичок
1. По началу были еще параметры.
2. Не знаю как надо, поэтому спрашиваю
 

tf

крылья рулят
1. По началу были еще параметры.
вот и я помню что были...
уже нет?
RewriteRule ^(ru|en)/type(.*)/(.*)/$ ?lang=$1&type=$2&page=$3&%{QUERY_STRING}
RewriteRule ^(ru|en)/(.*)$ ?lang=$1&param=$2&%{QUERY_STRING}
 

Mishanja

Новичок
RewriteRule ^(ru|en)/type(.*)/(.*)/$ ?lang=$1&t_id=$2&page=$3&%{QUERY_STRING}
RewriteRule ^(ru|en)/(.*)$ ?lang=$1&t_id=$2&%{QUERY_STRING}

не работает что-то :(

-~{}~ 12.11.06 11:26:

А можно как-то увидеть что mod_rewrite передает скрипту если он выдает 404?
 

tf

крылья рулят
Mishanja, не работает что?
какой файл вызывает?
404 переопредели
ErrorDocument 404 404.php
 

Mishanja

Новичок
tf

ну вот те 2 правила не работают, выдает 404.

Ща попробую посмотреть что он передает скрипту.

-~{}~ 12.11.06 11:43:

а куда положить 404.php?

-~{}~ 12.11.06 11:51:

Все, переопледелил, пишет что QUERY_STRING вообще пуста при запросе в строке www.site.ru/ru/type1/

и использовании вот таких правил

RewriteRule ^(ru|en)/(.*)$ ?lang=$1$2&%{QUERY_STRING}
RewriteRule ^(ru|en)/type(.*)/(.*)$ ?lang=$1&t_id=$2$3&%{QUERY_STRING}

-~{}~ 12.11.06 12:05:

Все, большое спасибо tf, разобрался :)
 
Сверху