这几天一直在倒腾opencart伪静态。因为我用最新的版本的,用以前1.5版本的教程好多都不用的。 当打开后台的seo url功能后,点击产品时url是http://www.yourdomain.com/xxxx/ 但是当你从目录页进入点击有的产品时url是http://www.yourdomain.com/目录/xxxx/ 这两天链接都是指向同一个产品,这样对于我们做SEO很不利,因为证导致很多重复页面,很容易被搜索引擎惩罚。 我用的opencart2.2版本,也请教好几个人,终于被我修改成功。 打开后台use seo url 功能后, 找到 \catalog\controller\startup 里面seo_url.php,然后进行编辑, 找到如下代码
$url .= '/' . $query->row['keyword'];
修改成
$url = '/' . $query->row['keyword'];
你可以把两个都改,这样二级目录也会变成http://www.yourdomain.com/二级目录/
接着,找到以下代码位置,比进行比对,添加多的下面相关代码。
if ($query->num_rows) { $url = explode('=', $query->row['query']); if ($url[0] == 'product_id') { $this->request->get['product_id'] = $url[1]; //mod $query1 = $this->db->query("SELECT category_id FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" . (int)$url[1] . "' GROUP BY category_id desc LIMIT 1 "); if($query1->num_rows){ $categoryid = $query1->row['category_id']; //$this->request->get['path'] = $categoryid; $query2 = $this->db->query("SELECT parent_id FROM " . DB_PREFIX . "category WHERE category_id = '" . (int)$categoryid . "' GROUP BY parent_id desc LIMIT 1 "); if($query2->num_rows){ $parentid = $query2->row['parent_id']; if($parentid==0){ $this->request->get['path'] = $categoryid; }else{ $this->request->get['path'] = $parentid . '_' . $categoryid; } } //end mod } }
if ($url[0] == 'category_id') { if (!isset($this->request->get['path'])) { //$this->request->get['path'] = $url[1]; //mod $query3 = $this->db->query("SELECT parent_id FROM " . DB_PREFIX . "category WHERE category_id = '" . (int)$url[1] . "' GROUP BY parent_id desc LIMIT 1 "); if($query3->num_rows){ $parentid = $query3->row['parent_id']; if($parentid==0){ $this->request->get['path'] = $url[1]; }else{ $this->request->get['path'] = $parentid . '_' . $url[1]; } } //end mod } else { $this->request->get['path'] .= '_' . $url[1]; } }
最后,保存一下,就保留下一个连接就是http://www.yourdomain.com/products,所有目录都会被删除掉。