現在直面しているルーティングの問題を解決しようとしていますが、運が悪いです(何時間もグーグルで検索し、数十の例を見て、質問を解決しましたが、どれもうまくいきませんでした-最も近いのは、このRouting Zend Framework 2 Language in urlですが、これでも私のために働いていません)。
SSO アプリケーション (つまり、認証部分) を作成しました。現在、それを ZF2 アプリに移植しています (ルーターを回避したため、ほとんど機能していますが、最終的なルーティングを行う必要があります)。これらのタイプの URL のみが可能:
http[s]://domain.com/login/asfgsdgdsfgzsdgdsf/
http[s]://domain.com/login/tdhjsdgbndfnfgdnhd/
http[s]://domain.com/logout/asfgsdgdsfgzsdgdsf/
http[s]: //domain.com/info/dthnzdfbdfhgnfsd/
それらlogin
、logout
またはパーツはコントローラーでもアクションでもありませんが、メソッド名であり、次におよびinfo
内から SSO サービスで呼び出します。URL の残りの部分は、クライアント アプリケーションのハッシュです。IndexController
indexAction()
ここで、ホーム ルートのみに一致するルーター構成を示します。他の部分 (メソッド名 [およびハッシュ]) が提供されると、ZF2 アプリから 404 を取得しました (したがって、少なくともアプリ コンテキスト内にいます)。
return array(
'router' => array(
'routes' => array(
'home' => array(
'type' => 'Zend\Mvc\Router\Http\Segment',
'options' => array(
'route' => '/',
'defaults' => array(
'controller' => 'SSO\Controller\Index',
'action' => 'index',
'act' => 'login', // by doing this I am able to workaround the router and work with SSO
'client' => '<my_secret_hash>', // by doing this I am able to workaround the router and work with SSO
),
),
'child_routes' => array(
'action' => array(
'type' => 'Zend\Mvc\Router\Http\Segment',
'options' => array(
'route' => '[/:act]',
'defaults' => array(
'act' => 'login',
),
'constraints' => array(
'act' => '(login|logout|info)?', // only login, logout or info are allowed
),
),
'child_routes' => array(
'client' => array(
'type' => 'Zend\Mvc\Router\Http\Segment',
'options' => array(
'route' => '[/:client]',
'constraints' => array(
'client' => '[a-zA-Z0-9]+',
),
'defaults' => array(
'client' => '<my_secret_hash>',
),
'may_terminate' => true,
),
),
),
),
),
),
),
);
(私のmodule.configrouter
の一部のみが提供されています...)
現在、そのルーターのみhttp[s]://domain.com[/]
が一致しており、またはのいずれかがA http[s]://domain.com/(login|logout|info)[/]
404エラーが発生しました。http[s]://domain.com/(login|logout|info)/adfbsDVdfbzdbxfbndzxbxfnb[/]
ルート パーツをオプションとして (テストと開発の目的で) 定義しようとしていますが、運用環境では必須です。とにかく、私もそれらをオプションではないと定義しようとしましたが、どちらも機能しませんでした。
質問:最初に定義したルート (URL)と一致するようにルーターを構成するにはどうすればよいですか?