Strict Standards: Resource ID#30 used as offset, casting to integer (30) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#32 used as offset, casting to integer (32) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#33 used as offset, casting to integer (33) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401
ТвойWeb :: Версия для печати :: rewrite rule - htaccess
ТвойWeb » WebMaster класс » PHP/Perl » rewrite rule - htaccess

Страниц (1): [1]
 

1. Gosudar - 08 Мая, 2007 - 06:59:14 - перейти к сообщению
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

Не понял почему? И как можно заставить это работать?
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/
а все дело в том, что:
Цитата:
Обратные связи это $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 подумал и вот оно решение!

CODE:

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


При этом у меня в логе примерно следующее (лишние строки удалил):

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'



Можно предположить, что количество параметров при этом не ограничено Улыбка

Форум на AlfaSpace.NET


Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0385]     [ Gzipped ]



Notice: ob_end_flush(): failed to send buffer of ob_gzhandler (1) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/page_tail.php on line 33