【问题标题】:Codeigniter using routes & 301 redirectsCodeigniter 使用路由和 301 重定向
【发布时间】:2012-02-14 15:23:29
【问题描述】:
我正在部署一个新站点,该站点需要为 Google 索引的现有链接设置 301 重定向。
谁能建议我如何使用路由功能和正则表达式我强制任何链接使用新的 301 重定向。
例如一条路线
$route['hotel/pages/([a-z0-9_-]+)//\.htm$/'] = 'hotel/page/redirect/$1/$2';
所以我想要任何遵循以下结构的页面:
site.com/hotel/pages/somesection/page.html
使用另一个控制器来设置 301 重定向(我可以这样做)
谁能给我一些建议?
【问题讨论】:
标签:
php
regex
codeigniter
redirect
frameworks
【解决方案1】:
这应该可以(建立了一个快速的本地测试并且有效):
$route['hotel/pages/(:any)/(\w+.html$)'] = 'hotel/page/redirect/$1/$2';
:any(CI 的东西)很像/\w+/i,所以它匹配第三段中的任何内容,并重新映射到$1;然后你有一个斜线,然后是任何字符,重复多次,并以'.html'结尾,重新映射到$2
【解决方案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