2012-02-14 67 views
1

我正在部署一個新的站點,需要301重定向設置爲由Google索引現有鏈接的過程。Codeigniter使用路由和301重定向

任何人都可以建議如何使用路由功能&正則表達式我強制任何鏈接使用新的301重定向。

E.g.路線

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

所以我想下面的下面的結構,任何網頁:

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

使用另一種控制器,我將設置301重定向(我可以做這個位)

任何人都可以給我一些建議嗎?

回答

1

這應該做(內置一個快速的本地測試和它的工作):

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

:any(一個CI的事情)很像/\w+/i所以它匹配在第3段話,以及重新映射到$1;那麼你有一個斜線,然後任何字符,重複更多次,並結束於'.html',它重新映射到$2

+0

歡呼達明!效果很好 – Zabs 2012-02-14 16:13:31

1

在Apache上,如果映射足夠簡單,可以用正則表達式描述, mod_rewrite並跳過重定向控制器。

例如:

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

會給你從

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

一個301

site.com/hotel/somesection/page.html