Opencart伪静态和相关SEO优化

这几天一直在倒腾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,所有目录都会被删除掉。