И соответственно скрипт, который все это обрабатывает.
Получается примерно следующее: http://mysite.com/script.php?f[]=1&f[]=2&f[]=3
Возможно ли это каким-либо образом с помощью mod_rewrite преобразовать к http://mysite.com/script/1/2/3/
Спустя 20 минут, 15 секунд (7.06.2009 - 07:10) twin написал(а):
Действительно - mor_rewrite
Дело всё в том, что этот модуль преобразует урлы с точностью до наоборот. Он это делает на сервере при приеме, а в адресную строку урл пишет браузер. То есть сначала, в адрес, пишется то, что нужно увидеть в строке, а потом он преобразует в то, что нужно получить приемнику.
Допустим в данном случае это могло бы выглядеть примерно так:
<form acnion="http://mysite.com/script/1/2/3/" methot="get">, а сервер бы увидел
script.php?f[]=1&f[]=2&f[]=3
НО.
Методом GET нельзя просто так передать массив. А как я понял, именно эта цель и преследуется. Используй post, а в акшен пиши все, что взбредет в голову. Тогда можно этим модулем преобразовать в нужный адрес. Допустим тут это могло бы выглядеть так:
Дело всё в том, что этот модуль преобразует урлы с точностью до наоборот. Он это делает на сервере при приеме, а в адресную строку урл пишет браузер. То есть сначала, в адрес, пишется то, что нужно увидеть в строке, а потом он преобразует в то, что нужно получить приемнику.
Допустим в данном случае это могло бы выглядеть примерно так:
<form acnion="http://mysite.com/script/1/2/3/" methot="get">, а сервер бы увидел
script.php?f[]=1&f[]=2&f[]=3
НО.
Методом GET нельзя просто так передать массив. А как я понял, именно эта цель и преследуется. Используй post, а в акшен пиши все, что взбредет в голову. Тогда можно этим модулем преобразовать в нужный адрес. Допустим тут это могло бы выглядеть так:
Код |
RewriteEngine On RewriteRule ^([0-9-]+)/([0-9-]+)/([0-9-]+)/$ script.php |
Но это чистой воды декорация.
Спустя 32 минуты, 59 секунд (7.06.2009 - 07:43) разум написал(а):
Спасибо за ответ. Действительно опечатался
Принцип работы mod_rewrite я знаю. Проблема именно в том, что запросов "f[]=" может быть огромное количество.
Обрисую ситуацию. Идет парсинг tracker.php torrentpier'а, после чего все засовывается в xml для вывода в рсс. Поэтому get запросы необходимы, для того, чтобы парсить именно нужный запрос (отдельные форумы\подфорумы). Можно и post, но придется каждый раз заходить на сайт, выбирать нужное и читать в браузере. А тут все работает в читалках.
Соответственно хотелось бы, чтобы запрос вида http://mysite.com/script/1/2/3/4/5/
преобразовывался в http://mysite.com/script.php?f[]=1&f[]=2&f[]=3&f[]=4&f[]=5
Принцип работы mod_rewrite я знаю. Проблема именно в том, что запросов "f[]=" может быть огромное количество.
Обрисую ситуацию. Идет парсинг tracker.php torrentpier'а, после чего все засовывается в xml для вывода в рсс. Поэтому get запросы необходимы, для того, чтобы парсить именно нужный запрос (отдельные форумы\подфорумы). Можно и post, но придется каждый раз заходить на сайт, выбирать нужное и читать в браузере. А тут все работает в читалках.
Соответственно хотелось бы, чтобы запрос вида http://mysite.com/script/1/2/3/4/5/
преобразовывался в http://mysite.com/script.php?f[]=1&f[]=2&f[]=3&f[]=4&f[]=5
Спустя 1 час, 30 минут, 37 секунд (7.06.2009 - 09:14) twin написал(а):
Цитата |
запросов "f[]=" может быть огромное количество. |
Не может. На GET есть ограничение, в отличии от post, так что выше головы не прыгнешь. Ну а преобразовать
Цитата |
запрос вида http://mysite.com/script/1/2/3/4/5/ |
в
Цитата |
http://mysite.com/script.php?f[]=1&f[]=2&f[]=3&f[]=4&f[]=5 |
я уже написал как:
Код |
RewriteRule ^script/([0-9-]+)/([0-9-]+)/([0-9-]+)$ index.php?f[]=$1&s[]=$2&d[]=$3 [L] |
Спустя 39 минут, 57 секунд (7.06.2009 - 09:53) разум написал(а):
Не совсем понял, в чем именно ограничение:
Код |
<?php if(isset($_GET['f'])) { if(!empty($_GET['f'])) { $arr = $_GET['f']; for ($z = 0; $z < count($arr); $z++) { $query = $query."&f[]=".$arr[$z]; } echo $query; } } ?> |
http://mysite.com/script.php?f[]=6&f[]=10&f[]=18&f[]=48
=> выведет &f[]=6&f[]=10&f[]=18&f[]=48
что в принципе и надо.
А хотелось бы чтобы работало http://mysite.com/script/6/10/18/48
Цитата |
я уже написал как: |
А если значений будет 10?
Спустя 2 часа, 27 минут, 17 секунд (7.06.2009 - 12:21) twin написал(а):
Ограничение по объёму передаваемой информации.
Цитата |
А хотелось бы чтобы работало http://mysite.com/script/6/10/18/48 |
я ничего не понимяю. Или ты не понимаешь, чего хочешь... Ну я же написал реврайт, именно так он и работает. Вот сделай так:
PHP |
<?php |
и в штаксель-максель пропиши мою строчку. Сам увидишь...
Спустя 8 часов, 16 минут, 26 секунд (7.06.2009 - 20:37) FatCat написал(а):
http://phpforum.ru/txt/index.php/t18496.html
Страницу узнали?
Нет там никакого мод-реврайта, все сделано в txt/index.php:
Страницу узнали?
Нет там никакого мод-реврайта, все сделано в txt/index.php:
PHP |
$main_string = $_SERVER['PHP_SELF']; |
Спустя 18 часов, 31 минута, 47 секунд (8.06.2009 - 15:09) glock18 написал(а):
Действительно, с mod_rewrite запаришься устанешь переписывать правила для любого количества параметров. Как сделать это без дублирования я не знаю, но FatCat предложил простой действенный вариант: ты можешь обрабатывать любой урл прямо в php.
Передавай что угодно, в общем.
Передавай что угодно, в общем.