我正在开发一个IndexController包含“about”,“contact”等页面的网站。我想要Zend或.htacess配置重定向/关于/ index / about,但是没有URL重写(或者至少是对用户透明)。
所以它的表现如下:
mysite.com/about => mysite / index / about(没有向用户显示所述URI)。
答案 0 :(得分: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
答案 1 :(得分:1)
你不需要做任何特别的事情,ZF2可以完美地处理自定义路线。 ZF2 tutorial by Akrabat表明一切都很好。你最终会在你的配置中做这样的事情:
'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插件来自动化这些东西。
答案 2 :(得分:-1)
尝试将其添加到文档根目录中的.htaccess文件中:
RewriteEngine On
RewriteRule ^about(.*)$ /index/about$1 [L]