Mod_rewrite преобразование когда переменная является массивом

  • Автор темы itwork
  • Дата начала
Статус
Закрыто для дальнейших ответов.
I

itwork

#1
можно ли как с помощью mod_rewrite преобразовать
из cсылки
Код:
domain/index.php?cat[0]=a&cat[1]=b&cat[2]=c&cat[...]=...
вот в такую ЧПУ, когда индекс cat может быть неограничен
Код:
doamin/a/b/c/...
 

vital

Больной Компом Детектед
29.01.2006
2 432
34
#4
Код:
RewriteEngine On
RewriteRule ^(.*)$ index.php [L,QSA]
PHP:
?php
/* Функция для очистки массива от пустых строк */
function Clear_array($array)
{
$c=sizeof($array);
$tmp_array=array();
for($i=0; $i<$c; $i++)
{
if (!(trim($array[$i])==""))
{
$tmp_array[]=$array[$i];
}
}
return $tmp_array;
}

$param=$_SERVER['REQUEST_URI'];
$params=explode("/",$param);
$params=Clear_array($params);
?>
И в результате выполнения скрипта мы получим все параметры, полученные при разбиении запроса. Например, запрос:

http://example.com/articles/category1/article12.htm

после обработки скриптом в массиве $params будет содержаться следующее:

Array
(
[0] => articles
[1] => category1
[2] => 12.htm
)
т.е. суть в том, что если колв-во параметров неограничено, то их надо обрабатывать самому скриптом.
 
I

itwork

#5
вроде стало кабы понятно,
но появился другой вопрос, хотел проанализировать поледний слэш
т.е хотел написать, если у ссылки есть последний слэш то срабатывает 1-ое правило, иначе 2-е
Код:
RewriteRule ^(.*)[/]$ a.php?path=$1 [qsa]
RewriteRule ^(.+[^/])$ a.php?file=$1 [qsa]
но ни как не могу понять где ошибку допутил, если в ссылке есть последний сэш то срабатывают оба правила
 

vital

Больной Компом Детектед
29.01.2006
2 432
34
#8
Просто как вариант.
А про слеш.. Так уберите его вообще из условия.
RewriteRule ^(.*)+[/]$ a.php?path=$1 [qsa]
RewriteRule ^(.*)$ a.php?file=$1 [qsa]
 
Статус
Закрыто для дальнейших ответов.