0

我一直在尋找建立規則,從舊網站的網址重定向到一個全新的使用CakePHP 2.5301從傳統的網站重定向到CakePHP的網站使用routes.php文件和查詢字符串

本來我是打算寫建.htaccess規則(儘管要使用3個規則中的哪一個並不完全清楚),直到我想到我應該能夠在routes.php中創建301個重定向規則,如Routing page所解釋的。

不幸的是,雖然建立將www.example.com/page.php重定向到www.example.com/page的規則相當簡單,但爲包含查詢字符串的URL設置規則會更棘手。

例如,我一直在嘗試重定向包含分頁的頁面,這些頁面通常會形成像www.example.com/things/index/page:1不幸的是,當原始頁面形成爲www.example時。 com/things_page.php?page_no = 1我可以將其重定向到www.example.com/things,但我無法繼續分頁。爲此,我使用:

Router::redirect('/things_page.php?page_no=:page', array('controller' => 'things', 'action' => 'index', ':page' => 'page:[0-9]+'),array('persist' => true, 'status' => 301));

從我收集的關於SO大多是圍繞類似主題。不幸的是,我無法得到我的頭來得到框架來解釋該查詢字符串作爲重定向的url使用的數據。

我在某處讀到Cake它實際上不可能將查詢字符串轉換爲Cake可以在Router :: redirect()語句中解釋的乾淨路徑,但是由於我不能成爲一個獨特的案例,我需要將舊鏈接翻譯成Cake兼容的路徑。

如果我能避免.htaccess路線,我寧願這樣做,以便於維護,但如果這是我需要找出要編輯的3個.htaccess文件中的哪一個的唯一方法。

乾杯

編輯: 最後,我發現了一個法國論壇,建議把規則中的AppController的beforefilter()函數,像這樣的妥協:

public function beforeFilter(){ 
    if (isset($_GET['id'])) { 
    $this->redirect(array('controller' => 'things', 'action' => 'view', $_GET['id']));. 
    } 
} 

我補充我的使用字符串搜索$ _SERVER ['REQUEST_URI']來查找多個頁面使用相同$ _GET變量時的things_page.php。這是一個有點粗糙,但它的工作原理

回答

0

至於我可以告訴大家,這是仍然不支持,我覺得follwing票是有點兒關於這個問題,不太清楚,但:

https://github.com/cakephp/cakephp/issues/2120

除非沒有這方面的支持,否則您必須使用.htaccess,您應該用來處理重定向的那個是webroot文件夾中的一個,即app/webroot/.htaccess