2010-04-21 44 views
1

我爲一家公司創建了一個新網站,我希望所有之前的搜索引擎結果都被重定向。由於有相當多的頁面,其中大多數使用id我想使用一些通用的而不是重新路由所有舊頁面。Cakephp,將舊的谷歌搜索結果路由到新的主頁

我首先想到的是要做到這一點:

Router::connect('/*', array('controller' => 'pages', 'action' => 'display', 'home')); 

,並將該在routes.php文件文件[因爲它優先]讓所有的請求與以前的路線行動驗證的盡頭將返回true,並重定向到主頁。

但是這不起作用。

當我在路由器上使用不同的路徑時,它成功重定向。例如,如果我給它:

Router::connect('/*', array('controller' => 'projects', 'action' => 'browser')); 

它工作正常。當使用控制器頁面,動作顯示等

我貼我的routes.php文件文件問題出現[因爲它是小]希望有人可以給我一個提示:

Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home')); 

    Router::connect('/company/*', array('controller' => 'articles', 'action' => 'view')); 

    Router::connect('/contact/*', array('controller' => 'contacts', 'action' => 'view')); 

    Router::connect('/lang/*', array('controller' => 'p28n', 'action' => 'change')); 

    Router::connect('/eng/*', array('controller' => 'p28n', 'action' => 'shuntRequest', 'lang' => 'eng')); 

    Router::connect('/gre/*', array('controller' => 'p28n', 'action' => 'shuntRequest', 'lang' => 'gre')); 


    Router::parseExtensions('xml'); 
+0

當您連接/ *到頁面::顯示這是什麼情況? – 2010-04-21 15:46:13

+1

我可能會試着在htaccess中用正則表達式來解決這個問題,併發出一個301 – 2010-04-21 16:40:08

+0

#Travis Leleu,它會得到這樣的信息:「Not Found 錯誤:在此服務器上找不到請求的地址'/ asdasdf'。」 – ion 2010-04-22 08:33:36

回答

2

更大的問題是,路線不會重定向,它將URL與響應連接起來。換句話說,它確保你現在無效的URL仍然會產生一個有效的頁面。這與你想達到的完全相反。

你想告訴訪客一個曾經有效的URL不再有了。在這種情況下,您可以通過發出適當的HTTP響應代碼301 Moved Permanently來做到這一點。如果不這樣做,這些網址對搜索引擎仍然有效,並且不會更新其索引。

您必須通過路由將所有無效URL連接到某個控制器操作,該操作將發出$this->redirect('...', 301)或者您可以使用一些.htaccess規則重定向。要使用哪一個取決於重定向的複雜性,但您可能會使用簡單的.htaccess mod_rewrite規則。

上有足夠的SO例子:https://stackoverflow.com/search?q=htaccess+301+redirect

3

而不是試圖處理cakePHP路由文件中的所有內容,我建議您根據需要使用.htaccess文件301重定向頁面。

上面的內容不會影響排名,因爲據我所見,在您提出的任何基於route.php的解決方案中都不會輸出301重定向。