2016-08-08 54 views
3

在我的網絡應用程序中,我需要將所有網址重定向到特定頁面,但3個特定網址除外。將所有內容重定向到特定頁面,但某些網址除外 - Yii

我該如何在Yii框架中全局(無痛)地完成它?是否有可用於處理所有GET請求的基礎控制器?

我正在使用Yii 2.0。

+0

尋找[此](http://www.yiiframework.com/doc-2.0/guide-runtime-routing .html#default-route)? – cske

+0

看起來可行。但是我可以使用'catchAll'來捕獲除3個URL路徑之外的所有請求嗎? – lesssugar

+0

此外,該應用程序有大量的命名路由集,默認路由僅用於「空路由」。 – lesssugar

回答

5

我會用這種或類似UrlManager配置:

'urlManager' => [ 
    'enablePrettyUrl' => true, 
    'rules' => [ 
     // your rule for specific URL #1, 
     // your rule for specific URL #2, 
     // your rule for specific URL #3, 
     '<controler>/<action>' => 'redirect/target', 
    ], 
] 

這不是由第3分的規則進行匹配的方式一切都是由最後一個匹配和去'redirect/target'

+0

我的一位同事指出,這種操作最好在.htaccess級別上完成。我不確定我是否同意這一點,但上面的答案絕對能夠成功解決我遇到的問題。 – lesssugar

0

在配置/ main.php:

'components' => [ 
    'urlManager' => [ 
     'enablePrettyUrl' => true, 
     'showScriptName' => false, 
     'rules' => [ 
      '<controller>/<action1>'=>'<redirect>/<target1>', 
      '<controller>/<action2>'=>'<redirect>/<target2>', 
      '<controller>/<action3>'=>'<redirect>/<target3>', 
      '<url:(.*)>'=>'maintenance/index', 
     ],   
    ], 
], 

參考: Found the solution here

相關問題