Zend framework URL中的双斜杠。

Zend framework URL中的双斜杠。,zend-framework,zend-route,zend-acl,zend-router,Zend Framework,Zend Route,Zend Acl,Zend Router,Zend路线问题 正常情况下,它工作正常 http://www.example.com/course-details/1/Physics-Newtons-Law http://www.example.com/course-details/1/Physics-Newtons-Law 但是如果我在url中输入一个额外的斜杠,就会调用错误控制器的noauthAction URL不起作用的示例 http://www.example.com/course-details//1/Physics-Newton

Zend路线问题

正常情况下,它工作正常

http://www.example.com/course-details/1/Physics-Newtons-Law http://www.example.com/course-details/1/Physics-Newtons-Law 但是如果我在url中输入一个额外的斜杠,就会调用错误控制器的noauthAction

URL不起作用的示例

http://www.example.com/course-details//1/Physics-Newtons-Law http://www.example.com/course-details/1//Physics-Newtons-Law http://www.example.com/course-details//1/Physics-Newtons-Law http://www.example.com/course-details/1//Physics-Newtons-Law 是否需要在管线定义中设置某些内容以允许额外的斜线

application.ini中的路由

resources.router.routes.viewcourse.route = "/course-details/:course_id/:title" resources.router.routes.viewcourse.defaults.controller = course resources.router.routes.viewcourse.defaults.action = view resources.router.routes.viewcourse.defaults.title = resources.router.routes.viewcourse.reqs.course_id = "\d+" resources.router.routes.viewcourse.route=“/course details/:course\u id/:title” resources.router.routes.viewcourse.defaults.controller=课程 resources.router.routes.viewcourse.defaults.action=view resources.router.routes.viewcourse.defaults.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"

谢谢扎克,那帮我修好了。我走错了路——我在玩弄apache的重写规则来删除双斜杠——但这一条很快也很容易。谢谢,请注意,如果您使用$router->addConfig($config,'routes');实际上,它并不是在已经存在的路由(默认值)上添加路由,而是覆盖它们。。要真正添加它们,请确保执行$router->addDefaultRoutes();在执行addConfig之前