0

ゼンドルートの問題。

通常は正常に動作します。

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

余分なスラッシュを許可するためにルート定義に設定する必要があるものはありますか?

application.iniでのルーティング

resources.router.routes.viewcourse.route = "/ course-details /:course_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 +"
4

1 に答える 1

2

コントローラプラグインを使用して、一般的な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"
于 2012-06-17T17:16:11.550 に答える