codeigniter,如何避免由于路由配置不正确而导致内容重复?
我正在将一个复杂的旧网站迁移到一个用codeigniter编码的新网站,由于codeigniter的routes配置的工作方式,我面临许多重写url的问题,导致内容重复 我有这样的旧URL: /detail.php?id=ABCDE&lang=en&page=2 /详图/ABCDE/en/2 新站点改为具有seo友好URL,如: /en/products/hard-disks-2.html 在我的路线配置中,我: $route[':any/:any/:any']='controller/$1/$2/$3'; $url_后缀为“.html” 这会导致内容重复,因为: /en/产品/硬盘-2 /en/products/hard-disks-2.html /en/products/hard-disks-2.html?p=2 /en/产品/硬盘-2?p=2 /en/products/hard-disks-2.html/ /en/products/hard-disks-2.html/.html 以上所有内容都是codeigniter的有效途径,该线索用于网站内的重复内容 有没有办法避免这种情况?也许用正则表达式codeigniter,如何避免由于路由配置不正确而导致内容重复?,codeigniter,seo,web-crawler,Codeigniter,Seo,Web Crawler,我正在将一个复杂的旧网站迁移到一个用codeigniter编码的新网站,由于codeigniter的routes配置的工作方式,我面临许多重写url的问题,导致内容重复 我有这样的旧URL: /detail.php?id=ABCDE&lang=en&page=2 /详图/ABCDE/en/2 新站点改为具有seo友好URL,如: /en/products/hard-disks-2.html 在我的路线配置中,我: $route[':any/:any/:any']='controller/$1/$
我无法用.htaccess解决这个问题,因为该网站有太多可能的URL组合,而且我还有一些控制器,在那里我仍然需要使用get参数。我终于找到了不进行重复URL解析的方法 首先,在config.php中删除后缀,最好不要使用它: $config['url_后缀']= 然后在routes.php中,从不使用通配符,而是始终使用正则表达式 即,如果我使用: $route[':any/:num']='homepage/parser/$1/$2'; 这将适用于以下所有URL:
/a/10
/a/10/11
/a/10/11/12
等等
相反:
$route['([\w_-]+)/(\d+)'] = 'homepage/parser/$1/$2';
这只对你有用
/a/10
以及:
只有在URL真正以.html结尾时才有效
不幸的是/a/10.html/仍然是一个副本,因此,我需要至少一个.htaccess规则来删除URL中的尾部斜杠
我真的需要唯一的url,所以我想我会放弃这个项目中任何未来的codeigniter开发,我混合了url:1.HTML2目录3旧的动态url
相反,我发现对于SEO,purpouse可能是最好的:
-只使用没有扩展名的页面
-避免使用任何目录
如果这是我的另一个项目,我只在代码中使用普通URL,在routes.php中使用正则表达式
唯一的问题是尾部斜杠重复问题,但这可以通过此解决方案全局避免。htaccess从另一个解决方案:
如果你从不链接重复的URL,谷歌将永远找不到它…@不幸的是,会发生一些其他人或代码本身的错误,而这一切都发生了;另外,生成这些内容的原因很多,因为旧网站完全是旧式的/index.php?a=3&b=4,所以.htaccess无法提供所有参数,以便使用301迁移旧URL
$route['([\w_-]+).html'] = 'homepage/parser/$1';