И теперь сравните с сео_про (в моем модуле ссылки выбираются регуляркой и поступают на обработку в виде index.php/?route=бла-бла-бла), а потом обрабатываются. Если это продукт, то идет запрос в БД, иначе осуществляется поиск в массиве, создаваемом при инициализации.
public function rewrite($link)
{
$l=str_replace('&', '&', $link);
$l=str_replace('"', '', $l);
$l=str_replace('index.php?', '', $l);
$data=array();
parse_str($l, $data);
$url='';
foreach($data as $key=>$value)
{
switch($key)
{
case 'route':
if(isset($this->settings[$value]))
$url.=$this->settings[$value].'/';
else
{
$url='';
}
unset($data['route']);
break ;
case 'path':
$array_categories=explode('_', $value);
foreach($array_categories as $category_id)
{
if(isset($this->settings["category_id=".$category_id]))
$url.=$this->settings["category_id=".$category_id].'/';
else
$url='';
}
unset($data['path']);
break ;
case 'product_id':
$query=$this->db->query("SELECT * FROM `".DB_PREFIX."url_alias` WHERE `query`='".$this->db->escape('product_id='.(int)$value)."'");
if($query->num_rows && $query->row['keyword'])
$url.=$query->row['keyword'];
unset($data['product_id']);
break ;
case 'manufacturer_id':
case 'information_id':
if(isset($this->settings[$key.'='.$value]))
$url.=$this->settings[$key.'='.$value];
else
{
$url='';
}
unset($data[$key]);
break ;
}
}
if($url)
{
$query='';
if($data)
{
foreach($data as $key=>$value)
{
$query.='&'.rawurlencode((string)$key).'='.rawurlencode((string)$value);
}
if($query)
{
$query='?'.str_replace('&', '&', trim($query, '&'));
}
}
return $this->lang.$url.$query.$this->ext.'"';
}
else
{
return $link;
}
}