2012-06-05 27 views
0

我有一個控制器,命名爲:SomeLongUnfriendlyName
在路由器我給了一個別名:CoolName
現在,每當有人撥打/CoolName/theAction,執行/SomeLongUnfriendlyName/theAction。到現在爲止還挺好。
我的問題是,我想否認使用原始名稱SomeLongUnfriendlyName強制使用化名控制器

怎麼辦?


彈出砰砰砰砰

+0

我想你可以將它路由到其他地方,會給404,但這似乎很愚蠢。或者,實現一個自定義路由類,如果它檢測到原始控制器名稱,將會重定向。無論哪種方式,這似乎有點愚蠢。我很好奇背後的原因? – jeremyharris

+0

搜索引擎優化,我有幾個控制器做類似的工作,但我需要他們輸出相同的別名下的數據 – yossi

+1

你可以使用htaccess文件來防止它 – tigrang

回答

1

你可以使用你的應用程序控制器的beforeFilter方法檢查給定的URI是否具有相應的路由。如果是這樣,只需發送重定向到路由類。 確保您檢查瀏覽器上顯示的URL以避免無限重定向。

1

您應該可以將其添加爲重定向路線(如果您使用的是Cake 2.x)。我從來沒有嘗試過任何東西,但是從我對路由系統的瞭解中可以看出,如果將其放在最後並且沒有其他路由被捕獲,它將會正確地重定向到別名控制器。

Router::redirect(
    '/SomeLongUnfriendlyName/*', 
    array('controller' => 'CoolName'), 
    array('status' => 302) 
); 

在這裏,我們要重定向你不想使用到新的名稱。

+0

謝謝!但我使用1.3:\ – yossi