2012-03-21 88 views
3

我得到了關於Zend Framework的網站(即時通訊在Zend總noobob)。例如,我想讓一個網址「somewebsite.com/test/about」看起來像這樣「somewebsite.com/for-fun-link」。我如何在Zend中實現這一點?我是Zend和Apache服務器的新手。我在哪裏重寫Zend?我想靜態URL somewebsite.com/page/about重寫somewebsite.com/about-productZend框架 - 如何重寫URL到SEO友好的URL

而最後一個問題:我在哪裏可以通常會創建重寫?它依賴於服務器/技術?

+1

搜索自定義路線..例如。 http://www.zendcasts.com/creating-custom-zend_controller-routes-2/2009/01/ – Rufinus 2012-03-21 02:11:37

+1

這是ZF的黑暗藝術之一,所以你需要一個更狹窄的問題來獲得有用的答案。我所能做的就是建議[這裏]開始(http://framework.zend.com/manual/en/zend.controller.router.html) – RockyFord 2012-03-21 05:18:07

+0

非常感謝。這對我有很大的幫助。我沒有bootstrap.php文件,但我從screencast應用程序代碼到index.php,它工作preatty以及:)。再次感謝您的幫助。 – born2fr4g 2012-03-22 02:55:22

回答

2

在您的引導程序中,您需要配置一些「路線」。所以,如果你的引導結束這樣的事情:

$frontController = Zend_Controller_Front::getInstance(); 
$frontController->dispatch(); 

你可以加入一些路由定義是這樣的:

$frontController = Zend_Controller_Front::getInstance(); 

$router = $frontController->getRouter(); 
$router->addRoute('mylovelyroute', 
    new Zend_Controller_Router_Route_Static('for-fun-link', 
     array('controller' => 'test', 'action' => 'about') 
    ) 
); 
$router->addRoute('myotherroute', 
    new Zend_Controller_Router_Route_Static('about-product', 
     array('controller' => 'page', 'action' => 'about') 
    ) 
); 
$router->addRoute('justonemore', 
    new Zend_Controller_Router_Route_Static('another/longer/path', 
     array('controller' => 'mycontroller', 
      'action' => 'myaction', 
      'someparameter' => 'foo' 
     ) 
    ) 
); 

$frontController->dispatch(); 

addRoute()的第一個參數只是一個唯一的名稱。 Zend_Controller_Router_Route_Static採用你想捕獲的路徑,然後是一個參數數組,包括一個控制器和動作(和模塊,如果它適用)。

如果您想增加複雜性,可以將路由加載到數據庫外,或者開始使用更多動態路由。這裏的文檔是一個有用的下一步:http://framework.zend.com/manual/en/zend.controller.router.html#zend.controller.router.routes.standard