我正在将一个复杂的旧网站迁移到一个用codeigniter编码的新网站,由于codeigniter的路由配置的工作方式,我面临着导致重复内容的大量重写网址问题。
我有这样的旧网址:
新网站改为使用seo友好网址:
在我的路线配置中:
这导致重复的内容,因为:
上述所有内容都是codeigniter的有效路由,也是网站内重复内容的主要途径。
有没有办法避免这种情况? 也许使用正则表达式?
我无法用.htaccess解决这个问题,因为网站有太多可能的网址组合,而且我还有一些控制器,我仍然需要使用“获取”参数。
答案 0 :(得分:0)
我终于弄明白了如何重复网址解析。
首先在config.php中删除后缀,最好永远不要用它: $ config ['url_suffix'] ='';
然后在routes.php中,永远不要使用通配符,并始终使用正则表达式。
是的,如果我使用: $ route ['(:any)/(:num)'] ='主页/解析器/ $ 1 / $ 2'; 这适用于以下所有网址:/a/10
/a/10/11
/a/10/11/12
等等!
相反:
$route['([\w_-]+)/(\d+)'] = 'homepage/parser/$1/$2';
这只适用于
/a/10
和
$route['([\w_-]+).html'] = 'homepage/parser/$1';
仅在您的网址真正以.html
结尾时才有效不幸的是/a/10.html/仍然是重复的,因此,我需要至少一个.htaccess规则来删除网址中的尾部斜杠
我真的需要唯一的URL,所以我想我正在放弃这个项目的任何未来的codeigniter开发,我混合了url:1).html 2)目录3)旧动态网址
相反,我发现对于SEO purpouse可能是最好的: - 仅使用没有扩展名的页面 - 避免任何目录
所以如果是这种情况(我的另一个项目),我只需在我的代码中使用普通URL,在routes.php中使用正则表达式。
唯一的问题是尾随斜杠重复问题,但这可以通过此其他解决方案中的.htaccess全局避免: Remove trailing slash using .htaccess except for home / landing page