Codeigniter使用路线& 301重定向

时间:2012-02-14 15:23:29

标签: php regex codeigniter redirect frameworks

我正在部署一个新网站,该网站需要针对由Google编制索引的现有链接进行301重定向设置。

任何人都可以建议如何使用路线功能&正则表达式我强制任何链接使用新的301重定向。

E.g。路线

$route['hotel/pages/([a-z0-9_-]+)//\.htm$/'] = 'hotel/page/redirect/$1/$2';

所以我想要遵循以下结构的任何页面:

  

site.com/hotel/pages/somesection/page.html

使用另一个控制器,我将设置301重定向(我可以这样做)

有人能给我一些建议吗?

2 个答案:

答案 0 :(得分:1)

这应该做(建立一个快速的本地测试并且它起作用):

$route['hotel/pages/(:any)/(\w+.html$)']  = 'hotel/page/redirect/$1/$2';

:any(CI的内容)与/\w+/i非常相似,因此它匹配第3段中的任何内容,并重新映射到$1;然后你有一个斜线,然后是任何角色,重复多次,并以'.html'结尾,重新映射到$2

答案 1 :(得分:1)

在apache上,如果映射很简单,可以使用正则表达式进行描述,则可以使用mod_rewrite并跳过重定向控制器。

例如:

RewriteEngine On
RewriteRule ^hotel/pages/(.*)/(.*\.html?)$ http://site.com/hotel/$1/$2 [R=301,L]

会从

给你一个301
site.com/hotel/pages/somesection/page.html

site.com/hotel/somesection/page.html