我正在部署一个新网站,该网站需要为谷歌索引的现有链接设置301个重定向。
有人能建议如何使用路线功能&正则表达式I强制任何链接使用新的301重定向。
例如,路线
$route['hotel/pages/([a-z0-9_-]+)//'.htm$/'] = 'hotel/page/redirect/$1/$2';
所以我想要任何遵循以下结构的页面:
site.com/hotel/pages/somesection/page.html
使用另一个控制器,在那里我将设置301重定向(我可以做这个位)
有人能给我一些建议吗?
这应该做(建立了一个快速的本地测试并成功了):
$route['hotel/pages/(:any)/('w+.html$)'] = 'hotel/page/redirect/$1/$2';
:any
(CI的东西)很像/'w+/i
,所以它匹配第三段中的任何东西,并重新映射到$1
;然后有一个斜线,然后是任何字符,重复更多次,以".html"结尾,它重新映射到$2
在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