RewriteEngine on
RewriteRule ^(.*)-(.*)-(.*)-(.*)-(.*)-(.*)-(.*)-(.*)-(.*)-(.*)\.htm$ catalog/$1/$2/$3/$4/$5/$6/$7/$8/$9/$10/
RewriteRule ^(.*)-(.*)-(.*)-(.*)-(.*)-(.*)-(.*)-(.*)-(.*)\.htm$ catalog/$1/$2/$3/$4/$5/$6/$7/$8/$9/
RewriteRule ^(.*)-(.*)-(.*)-(.*)-(.*)-(.*)-(.*)-(.*)\.htm$ catalog/$1/$2/$3/$4/$5/$6/$7/$8/
RewriteRule ^(.*)-(.*)-(.*)-(.*)-(.*)-(.*)-(.*)\.htm$ catalog/$1/$2/$3/$4/$5/$6/$7/
RewriteRule ^(.*)-(.*)-(.*)-(.*)-(.*)-(.*)\.htm$ catalog/$1/$2/$3/$4/$5/$6/
RewriteRule ^(.*)-(.*)-(.*)-(.*)-(.*)\.htm$ catalog/$5/$4/$3/$2/$1/
RewriteRule ^(.*)-(.*)-(.*)-(.*)\.htm$ catalog/$4/$3/$2/$1/
RewriteRule ^(.*)-(.*)-(.*)\.htm$ catalog/$3/$2/$1/
RewriteRule ^(.*)-(.*)\.htm$ catalog/$2/$1/
RewriteRule ^(.*)\.htm$ catalog/$1/
Работает только вплоть до 10 .
Вот это уже неработает:
RewriteRule ^(.*)-(.*)-(.*)-(.*)-(.*)-(.*)-(.*)-(.*)-(.*)-(.*)-(.*)\.htm$ catalog/$1/$2/$3/$4/$5/$6/$7/$8/$9/$10/$11
Не понял почему? И как можно заставить это работать?
1. Gosudar - 08 Мая, 2007 - 06:59:14 - перейти к сообщению
2. TvoyWeb - 09 Мая, 2007 - 23:06:38 - перейти к сообщению
Gosudar
У тебя не срабатывает не только 11, но 10. попробуй запросить ab-2-3-4-5-6-7-8-9-10.htm и ты получишь на выходе catalog/ab/2/3/4/5/6/7/8/9/ab0/
а все дело в том, что:
То есть $10 расценивается как шаблон $1 за которым идет 0.
Искать решения я не стал, времени нет совсем. Но если найдешь решение отпишись.
У тебя не срабатывает не только 11, но 10. попробуй запросить ab-2-3-4-5-6-7-8-9-10.htm и ты получишь на выходе catalog/ab/2/3/4/5/6/7/8/9/ab0/
а все дело в том, что:
Цитата:
Обратные связи это $N (N=0..9) идентификаторы которые заменяются содержимым N-й группы подходящего Шаблона.
То есть $10 расценивается как шаблон $1 за которым идет 0.
Искать решения я не стал, времени нет совсем. Но если найдешь решение отпишись.
3. Gosudar - 10 Мая, 2007 - 04:47:46 - перейти к сообщению
В том то и дело , что решения я так и не отыскал
В документации про это, тоже ничего нет
Но выход всё таки должен быть ...
В документации про это, тоже ничего нет
Но выход всё таки должен быть ...
4. TvoyWeb - 10 Мая, 2007 - 08:30:35 - перейти к сообщению
Gosudar пишет:
В документации про это, тоже ничего нет
Не понял, про что ничего нет? Про то что идентификаторы могут быть от 0 до 9?
5. Gosudar - 10 Мая, 2007 - 08:50:32 - перейти к сообщению
опс, я наверно не так выразился, сорри.
Нет ничего по решению задачи
Нет ничего по решению задачи
6. alx - 21 Сентября, 2007 - 19:31:04 - перейти к сообщению
Стояла подобная задача.
Необходимо было запрос вида:
/p1/1/p2/2/p3/3/p4/4/p5/5/p6/6/p7/7/p8/8/p9/9/p10/10
преобразовать в
/index.php?p1=1&p2=2&p3=3&p4=4&p5=5&p6=6&p7=7&p8=8&p9=9&p10=10
Почитал документацию по mod_rewrite подумал и вот оно решение!
Первым правилом строку запроса по паре параметр/значение преобразуем в параметр=значение. Обратите внимание на то, что в первом правиле отсутствует буква L ' last|L ' (последнее правило).
Вторым правилом завершаем преобразование строки запроса: преобразуем последнюю пару и добавляем index.php?
В процессе отладки, очень помог просмотр лога rewrite_log.
Чтобы его включить в httpd.conf:
При этом у меня в логе примерно следующее (лишние строки удалил):
Можно предположить, что количество параметров при этом не ограничено
Необходимо было запрос вида:
/p1/1/p2/2/p3/3/p4/4/p5/5/p6/6/p7/7/p8/8/p9/9/p10/10
преобразовать в
/index.php?p1=1&p2=2&p3=3&p4=4&p5=5&p6=6&p7=7&p8=8&p9=9&p10=10
Почитал документацию по mod_rewrite подумал и вот оно решение!
CODE:
RewriteRule ^(.*)/([^/]+)/([^/]+)$ $1&$2=$3 [NC]
RewriteRule ^([^/]+)/([^/]+)$ index.php?$1=$2 [NC,L]
RewriteRule ^(.*)/([^/]+)/([^/]+)$ $1&$2=$3 [NC]
RewriteRule ^([^/]+)/([^/]+)$ index.php?$1=$2 [NC,L]
Первым правилом строку запроса по паре параметр/значение преобразуем в параметр=значение. Обратите внимание на то, что в первом правиле отсутствует буква L ' last|L ' (последнее правило).
Вторым правилом завершаем преобразование строки запроса: преобразуем последнюю пару и добавляем index.php?
В процессе отладки, очень помог просмотр лога rewrite_log.
Чтобы его включить в httpd.conf:
CODE:
RewriteLog /home/user/logs/rewrite.log
RewriteLogLevel 2
RewriteLog /home/user/logs/rewrite.log
RewriteLogLevel 2
При этом у меня в логе примерно следующее (лишние строки удалил):
CODE:
rewrite 'p1/1/p2/2/p3/3/p4/4/p5/5/p6/6/p7/7/p8/8/p9/9/p10/10' -> 'p1/1/p2/2/p3/3/p4/4/p5/5/p6/6/p7/7/p8/8/p9/9&p10=10'
rewrite 'p1/1/p2/2/p3/3/p4/4/p5/5/p6/6/p7/7/p8/8/p9/9&p10=10' -> 'p1/1/p2/2/p3/3/p4/4/p5/5/p6/6/p7/7/p8/8&p9=9&p10=10'
rewrite 'p1/1/p2/2/p3/3/p4/4/p5/5/p6/6/p7/7/p8/8&p9=9&p10=10' -> 'p1/1/p2/2/p3/3/p4/4/p5/5/p6/6/p7/7&p8=8&p9=9&p10=10'
rewrite 'p1/1/p2/2/p3/3/p4/4/p5/5/p6/6/p7/7&p8=8&p9=9&p10=10' -> 'p1/1/p2/2/p3/3/p4/4/p5/5/p6/6&p7=7&p8=8&p9=9&p10=10'
rewrite 'p1/1/p2/2/p3/3/p4/4/p5/5/p6/6&p7=7&p8=8&p9=9&p10=10' -> 'p1/1/p2/2/p3/3/p4/4/p5/5&p6=6&p7=7&p8=8&p9=9&p10=10'
rewrite 'p1/1/p2/2/p3/3/p4/4/p5/5&p6=6&p7=7&p8=8&p9=9&p10=10' -> 'p1/1/p2/2/p3/3/p4/4&p5=5&p6=6&p7=7&p8=8&p9=9&p10=10'
rewrite 'p1/1/p2/2/p3/3/p4/4&p5=5&p6=6&p7=7&p8=8&p9=9&p10=10' -> 'p1/1/p2/2/p3/3&p4=4&p5=5&p6=6&p7=7&p8=8&p9=9&p10=10'
rewrite 'p1/1/p2/2/p3/3&p4=4&p5=5&p6=6&p7=7&p8=8&p9=9&p10=10' -> 'p1/1/p2/2&p3=3&p4=4&p5=5&p6=6&p7=7&p8=8&p9=9&p10=10'
rewrite 'p1/1/p2/2&p3=3&p4=4&p5=5&p6=6&p7=7&p8=8&p9=9&p10=10' -> 'p1/1&p2=2&p3=3&p4=4&p5=5&p6=6&p7=7&p8=8&p9=9&p10=10'
rewrite 'p1/1&p2=2&p3=3&p4=4&p5=5&p6=6&p7=7&p8=8&p9=9&p10=10' -> 'index.php?p1=1&p2=2&p3=3&p4=4&p5=5&p6=6&p7=7&p8=8&p9=9&p10=10'
rewrite 'p1/1/p2/2/p3/3/p4/4/p5/5/p6/6/p7/7/p8/8/p9/9/p10/10' -> 'p1/1/p2/2/p3/3/p4/4/p5/5/p6/6/p7/7/p8/8/p9/9&p10=10'
rewrite 'p1/1/p2/2/p3/3/p4/4/p5/5/p6/6/p7/7/p8/8/p9/9&p10=10' -> 'p1/1/p2/2/p3/3/p4/4/p5/5/p6/6/p7/7/p8/8&p9=9&p10=10'
rewrite 'p1/1/p2/2/p3/3/p4/4/p5/5/p6/6/p7/7/p8/8&p9=9&p10=10' -> 'p1/1/p2/2/p3/3/p4/4/p5/5/p6/6/p7/7&p8=8&p9=9&p10=10'
rewrite 'p1/1/p2/2/p3/3/p4/4/p5/5/p6/6/p7/7&p8=8&p9=9&p10=10' -> 'p1/1/p2/2/p3/3/p4/4/p5/5/p6/6&p7=7&p8=8&p9=9&p10=10'
rewrite 'p1/1/p2/2/p3/3/p4/4/p5/5/p6/6&p7=7&p8=8&p9=9&p10=10' -> 'p1/1/p2/2/p3/3/p4/4/p5/5&p6=6&p7=7&p8=8&p9=9&p10=10'
rewrite 'p1/1/p2/2/p3/3/p4/4/p5/5&p6=6&p7=7&p8=8&p9=9&p10=10' -> 'p1/1/p2/2/p3/3/p4/4&p5=5&p6=6&p7=7&p8=8&p9=9&p10=10'
rewrite 'p1/1/p2/2/p3/3/p4/4&p5=5&p6=6&p7=7&p8=8&p9=9&p10=10' -> 'p1/1/p2/2/p3/3&p4=4&p5=5&p6=6&p7=7&p8=8&p9=9&p10=10'
rewrite 'p1/1/p2/2/p3/3&p4=4&p5=5&p6=6&p7=7&p8=8&p9=9&p10=10' -> 'p1/1/p2/2&p3=3&p4=4&p5=5&p6=6&p7=7&p8=8&p9=9&p10=10'
rewrite 'p1/1/p2/2&p3=3&p4=4&p5=5&p6=6&p7=7&p8=8&p9=9&p10=10' -> 'p1/1&p2=2&p3=3&p4=4&p5=5&p6=6&p7=7&p8=8&p9=9&p10=10'
rewrite 'p1/1&p2=2&p3=3&p4=4&p5=5&p6=6&p7=7&p8=8&p9=9&p10=10' -> 'index.php?p1=1&p2=2&p3=3&p4=4&p5=5&p6=6&p7=7&p8=8&p9=9&p10=10'
Можно предположить, что количество параметров при этом не ограничено