#php #zend-framework #url #url-routing
#php #zend-framework #url #url-маршрутизация
Вопрос:
В ZendFramework я хочу перенаправлять URL-адреса, начинающиеся с ~
, на специальный контроллер и действие, чтобы другие URL-адреса, начинающиеся с ~
, не работали должным образом.
Например, смотрите ниже две маршрутизации URL:
mysite.com/~user
и
mysite.com/admin
Как я могу это сделать?
Ответ №1:
Попробуйте использовать это в вашем Bootstrap
// Get the instance of the router
$router = Zend_Controller_Front::getInstance()->getRouter();
// Set up a new regex router to match routes starting with ~
$route = new Zend_Controller_Router_Route_Regex(
'(^~)',
//This route should use a 'special' controller
array(
'controller' => 'special',
'action' => 'index'
)
);
// Add the new route to the router
$router->addRoute('archive', $route);
Вам понадобится вызываемый контроллер Special
для ответа на запросы, направляемые на этот маршрутизатор.
Комментарии:
1. Я пробую это, и появляется сообщение об ошибке
Invalid controller specified (~user)
.
Ответ №2:
Не уверен насчет zend конкретно, но лучший способ сделать это — добавить таблицу хэш-поиска до того, как URL-маршрутизатор выполнит свою работу.
Итак, допустим, mod_rewrite преобразует это: mysite.com /~пользователь
к этому: mysite.com/index.php?path =~пользователь
затем вы могли бы сделать что-то вроде этого:
$path = $_GET['path'];
$url_mod = array(
'~user'=>'my_other_controller',
'admin'=>'my_other_controller',
);
if(isset($url_mod[$path)) {
$path = $url_mod[$path];
}
Комментарии:
1. Обратите внимание на вопрос, мне нужна маршрутизация
URL
или любой другой подход, который я могу использовать в ZendFramework.