Zend 路由问题。
通常它工作正常。
http://www.example.com/course-details/1/Physics-Newtons-Law
但是,如果我在 url 中输入额外的斜杠,则会调用我的错误控制器的 noauthAction。
不起作用的网址示例。
http://www.example.com/course-details//1/Physics-Newtons-Lawhttp://www.example.com/course-details/1//Physics-Newtons-Law
是否需要在路由定义中设置某些内容以允许额外的斜杠?
应用程序中的路由.ini
resources.router.routes.viewcourse.route = "/course-details/:course_id/:title"资源.路由器.路由.视图课程.默认.控制器 = 课程资源.路由器.路由.视图课程.默认.操作 = 视图资源.路由器.路由.视图课程.默认.标题 =resources.router.routes.viewcourse.reqs.course_id = "\d+"
您可以使用控制器插件来修复常见的 URL 拼写错误。
/**
* Fix common typos in URLs before the request
* is evaluated against the defined routes.
*/
class YourNamespace_Controller_Plugin_UrlTypoFixer
extends Zend_Controller_Plugin_Abstract
{
public function routeStartup($request)
{
// Correct consecutive slashes in the URL.
$uri = $request->getRequestUri();
$correctedUri = preg_replace('//{2,}/', '/', $uri);
if ($uri != $correctedUri) {
$request->setRequestUri($correctedUri);
}
}
}
然后在您的 ini 文件中注册插件。
resources.frontController.plugins.UrlTypoFixer = "YourNamespace_Controller_Plugin_UrlTypoFixer"