0

IndexController が「about」、「contact」などのページを保持しているサイトで作業しています。Zend または .htacess 構成のいずれかで /about を /index/about にリダイレクトしたいのですが、URL re は必要ありません。 -書き込み (または、少なくとも、ユーザーに対して透過的であること)。

したがって、次のように実行されます。

mysite.com/about => mysite/index/about (前述の URI をユーザーに表示しない)。

4

3 に答える 3

2

新しい Service Manager 構成の使用:

'controller' => array(
    'classes' => array(
        'index_controller' => 'MyModule\Controller\IndexController',
    ),
),

'router' => array(
'routes' => array(

    'activities_list' => array(
        'type'    => 'Literal',
            'options' => array(
            'route' => '/about', <- The requested URL
            'defaults' => array(
                'controller' => 'index_controller', <- What will process the request
                'action'     => 'about',
            ),
        ),
    ),

), // End of routes
), // End of router
于 2012-06-02T08:09:28.463 に答える
1

そのために特別なことは何も必要ありません。ZF2 はカスタム ルートを処理するために完全に装備されています。Akrabatによる ZF2 チュートリアルは、それをすべてよく示しています。構成で次のようなことを行うことになります。

'Zend\Mvc\Router\RouteStack' => array(
    'parameters' => array(
        'routes' => array(
            'default' => array(
                'type'    => 'Zend\Mvc\Router\Http\Segment',
                'options' => array(
                    'route'    => '/[:controller[/:action]]',
                    'constraints' => array(
                        'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
                        'action'     => '[a-zA-Z][a-zA-Z0-9_-]*',
                    ),
                    'defaults' => array(
                        'controller' => 'Application\Controller\IndexController',
                        'action'     => 'index',
                    ),
                ),
            ),
            'about' => array(
                'type' => 'Zend\Mvc\Router\Http\Literal',
                'options' => array(
                    'route'    => '/',
                    'defaults' => array(
                        'controller' => 'Application\Controller\IndexController',
                        'action'     => 'about',
                    ),
                ),
            ),
        )
    )
)

もちろん、ActionController を拡張するか、Controller Plugin を作成することで、これらを自動化することもできます。

于 2012-06-01T18:11:09.297 に答える
-1

これをドキュメント ルートの .htaccess ファイルの適切な場所に追加してみてください。

RewriteEngine On
RewriteRule ^about(.*)$ /index/about$1 [L]
于 2012-06-01T18:12:16.927 に答える