Добрый день.
Пытаюсь воскресить ЧПУ для Joomla 1.5 + VirtueMart 1.1.3.
Странная штука, на сайте половина ссылок ЧПУ-шные, и имеют вид: МойСайт/Категория/Подкатегория/Название Товара. И половина index.php?option=com_virtuemart&page=shop.browse&category_id=000&Itemid=0 - то есть не ЧПУ-шные. При поиске в чем причина было найдена связка htaccess с mod_rewrite
RewriteEngine on
RewriteCond %{HTTP_HOST} ^mysite\.com
RewriteRule ^(.*)$ http://www.mysite.com/$1 [R=permanent,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L]
и файл в корне сайта rewrite.php
<?php
$pdo=new PDO('mysql:dbname=your_dbname;host=your_host','name_db','pass_db');
if(isset($_GET['page']) && $_GET['page']=='shop.product_details')
{
if($url=$pdo->query('SELECT url FROM sema_sef WHERE id='.$pdo->quote($_GET['product_id']).' AND cat>0')->fetchColumn())
{
echo "/".$url;
header("HTTP/1.1 301 Moved Permanently");
header("Location: /".$url);
die();
}
}
elseif(isset($_GET['page']) && $_GET['page']=='shop.browse')
{
if(isset($_GET['category_id']))
{
if($url=$pdo->query('SELECT url FROM sema_sef WHERE id='.$pdo->quote($_GET['category_id']).' AND cat=0')->fetchColumn())
{
$add=array();
if(isset($_GET['limit']))
$add[]='limit='.$_GET['limit'];
if(isset($_GET['limit']))
$add[]='limitstart='.$_GET['limitstart'];
if(isset($_GET['orderby']))
$add[]='orderby='.$_GET['orderby'];
if(isset($_GET['DescOrderBy']))
$add[]='DescOrderBy='.$_GET['DescOrderBy'];
if($add==array())
$add='';
else
$add='?'.implode('&',$add);
//echo "/".$url.$add;
header("HTTP/1.1 301 Moved Permanently");
header("Location: /".$url.$add);
die();
}
}
elseif(isset($_GET['manufacturer_id']))
{
if($url=$pdo->query('SELECT url FROM sema_sef WHERE id='.$pdo->quote($_GET['manufacturer_id']).' AND cat=-1')->fetchColumn())
{
$add=array();
if(isset($_GET['limit']))
$add[]='limit='.$_GET['limit'];
if(isset($_GET['limit']))
$add[]='limitstart='.$_GET['limitstart'];
if(isset($_GET['orderby']))
$add[]='orderby='.$_GET['orderby'];
if(isset($_GET['DescOrderBy']))
$add[]='DescOrderBy='.$_GET['DescOrderBy'];
if($add==array())
$add='';
else
$add='?'.implode('&',$add);
//echo "/".$url.$add;
header("HTTP/1.1 301 Moved Permanently");
header("Location: /".$url.$add);
die();
}
}
}
else
{
if($fin=strpos($_SERVER['REQUEST_URI'],'?'))
$sru=substr($_SERVER['REQUEST_URI'],1,$fin-1);
else
$sru=substr($_SERVER['REQUEST_URI'],1);
if($res=$pdo->query('SELECT id,cat FROM sema_sef WHERE url='.$pdo->quote($sru))->fetch(PDO::FETCH_ASSOC))
{
//category
if($res['cat']==0)
{
$_GET['page']='shop.browse';
$_GET['category_id']=$res['id'];
}
elseif($res['cat']==-1)
{
$_GET['page']='shop.browse';
$_GET['manufacturer_id']=$res['id'];
}
else
{
$_GET['page']='shop.product_details';
$_GET['category_id']=$res['cat'];
$_GET['product_id']=$res['id'];
//$_GET['flypage']='flypage-images.tpl';
$_REQUEST['product_id']=$_GET['product_id'];
//$_REQUEST['flypage']=$_GET['flypage'];
}
$_GET['Itemid']='4';
$_REQUEST['Itemid']=$_GET['Itemid'];
$_GET['option']='com_virtuemart';
$_REQUEST['option']=$_GET['option'];
$_REQUEST['page']=$_GET['page'];
$_REQUEST['category_id']=$_GET['category_id'];
$tmp=array();
foreach($_GET as $k=>$v)
{
$tmp[]="$k=$v";
}
$_SERVER['REQUEST_URI']='/index.php?'.implode("&",$tmp);
}
//print_r($_GET);
//print_r($_SERVER['REQUEST_URI']);
}
//}
При выключение этой связки все ссылки принимают вид: index.php?option=com_virtuemart&page=shop.browse&category_id=000&Itemid=0, в то время как он включен половина ссылок до определенного времени имеют вид ЧПУ, остальные обычные.
Подскажите пожалуйста, кто сталкивался, куда копать, что смотреть?
Спасибо большое! !