2016-08-08 1 views
3

In meiner Web App muss ich alle URLs auf eine bestimmte Seite umleiten, mit Ausnahme von 3 spezifischen URLs.Umleiten Sie alles auf eine bestimmte Seite, mit Ausnahme einiger URLs - Yii

Wie kann ich es global (und schmerzlos) in Yii Framework tun? Gibt es einen Basis-Controller, mit dem ich alle GET-Anfragen bearbeiten kann?

Ich benutze Yii 2.0.

+0

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

+0

Sieht praktikabel aus. Aber kann ich 'catchAll' verwenden, um alle Anfragen abzufangen, außer für 3 URL-Pfade? – lesssugar

+0

Auch in der App sind viele benannte Routen festgelegt und die Standardroute wird nur für "leere Routen" verwendet. – lesssugar

Antwort

5

würde ich dieses oder ähnliche urlManager Konfiguration verwenden:

'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', 
    ], 
] 

Auf diese Weise alles, was nicht von ersten drei Regeln angepasst wird, wird durch die letzten abgestimmt und geht zu 'redirect/target'.

+0

Ein Kollege von mir hat darauf hingewiesen, dass diese Art von Operation besser auf .htaccess Ebene durchgeführt werden soll. Ich bin mir nicht sicher, ob ich dem zustimme, aber die obige Antwort löst definitiv das Problem, das ich hatte. – lesssugar

0

In config/main.php:

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

Referenz: Found the solution here

Verwandte Themen