Observed on versions 3.0.12 and above.
I show on a demo website http://demo.virtuemart.net/wear/zxczxc
Will not be generated 404 error...
For product - http://demo.virtuemart.net/balldsfsdf-detail
Will not be generated 404 error! It's not funny for SEO!
Discussed many times before. That redirect is used so that sales are not likely to be lost. If you want to use the default Joomla error handler then simply deselect "Enable VirtueMart 404 error handling" in Configuration/Shop
Option "Enable VirtueMart 404 error handling" deselected. That's why i wrote about this error.
Look at code from router. There are all way from none existing URLs show category from first used in menu.
$last_elem = end($segments);
$slast_elem = prev($segments);
if ( (substr($last_elem, -(int)$helper->seo_sufix_size ) == $helper->seo_sufix)
|| ($last_elem=='notify' && substr($slast_elem, -(int)$helper->seo_sufix_size ) == $helper->seo_sufix) ) {
$vars['view'] = 'productdetails';
if($last_elem=='notify') {
$vars['layout'] = 'notify';
array_pop($segments);
}
if (!$helper->use_id ) {
$product = $helper->getProductId($segments ,$helper->activeMenu->virtuemart_category_id);
$vars['virtuemart_product_id'] = $product['virtuemart_product_id'];
$vars['virtuemart_category_id'] = $product['virtuemart_category_id'];
//vmdebug('View productdetails, using case !$helper->use_id',$vars,$helper->activeMenu);
}
elseif (isset($segments[1]) ){
$vars['virtuemart_product_id'] = $segments[0];
$vars['virtuemart_category_id'] = $segments[1];
//vmdebug('View productdetails, using case isset($segments[1]',$vars);
} else {
$vars['virtuemart_product_id'] = $segments[0];
$vars['virtuemart_category_id'] = $helper->activeMenu->virtuemart_category_id ;
//vmdebug('View productdetails, using case "else", which uses $helper->activeMenu->virtuemart_category_id ',$vars);
}
} elseif (!$helper->use_id && ($helper->activeMenu->view == 'category' ) ) {
$vars['virtuemart_category_id'] = $helper->getCategoryId (end($segments) ,$helper->activeMenu->virtuemart_category_id);
$vars['view'] = 'category' ;
} elseif (isset($segments[0]) && ctype_digit ($segments[0]) || $helper->activeMenu->virtuemart_category_id>0 ) {
$vars['virtuemart_category_id'] = $segments[0];
$vars['view'] = 'category';
} elseif ($helper->activeMenu->virtuemart_category_id >0 && $vars['view'] != 'productdetails') {
$vars['virtuemart_category_id'] = $helper->activeMenu->virtuemart_category_id ;
$vars['view'] = 'category';
} elseif ($id = $helper->getCategoryId (end($segments) ,$helper->activeMenu->virtuemart_category_id )) {
// find corresponding category . If not, segment 0 must be a view
$vars['virtuemart_category_id'] = $id;
$vars['view'] = 'category' ;
} else {
$vars['view'] = $segments[0] ;
if ( isset($segments[1]) ) {
$vars['task'] = $segments[1] ;
}
}
I'm using VM3.0.17 and it does return 404 when the VM 404 setting is off - this is a test version from SVN. The next stable public version will be 3.0.18
You tested local or public site? show me please. I show you on 3.0.16 vm, joomla 3.5.1
http://clip2net.com/s/3zlFN22 - option off
http://m-sumka.ru/katalog/platya/povsednevnye-platya/sdfsdfsdf status 200 OK!
I think need send header's 404, but show category like it used now. It solve all problems.
Quote from: jenkinhill on June 18, 2016, 17:09:56 PM
I'm using VM3.0.17 and it does return 404 when the VM 404 setting is off - this is a test version from SVN. The next stable public version will be 3.0.18
Hello, will 3.0.18 be a public stable version recommended to be used in a live site?. Any estimated date for it to be published? Thanks