0

機能する ZF アプリケーションを SSL を使用するように変換しようとしています。証明書は有効で機能していますが、アプリケーションの構成に問題があります。

.htaccess の内容は次のとおりです。

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

SetEnv APPLICATION_ENV development

IndexController は実にシンプルです。

class IndexController extends Zend_Controller_Action
{
    public function indexAction() {
      $auth = Zend_Auth::getInstance();
      if ($auth->hasIdentity()) {
        $this->_helper->redirector('index', 'dash');
      } else {
        $this->_helper->redirector('index', 'auth');
      }
    }

}

https またはポートを指定せずにサイトを参照すると、正確に https://app-url.com にルーティングされますが、その後 https://app-url.com/authリダイレクトしようとして403 が返されます。私は行方不明ですか?

4

1 に答える 1

1

「インデックス」がコントローラーの名前で、「ダッシュ」がアクションの名前であると仮定すると、リダイレクター ヘルパー1のパラメーターの順序が間違っています。

最初のパラメーターはアクションで、2 番目のパラメーターはコントローラーです。したがって、正しいメソッド呼び出しは次のようになります

$this->_helper->redirector('dash', 'index');

特定のルートが設定されていない場合、これにより URL /index/dash にリダイレクトされます。

「ダッシュ」が実際にコントローラーの名前であり、「インデックス」がアクションの名前である場合、メソッドDashControllerを含むという名前の新しいコントローラーを追加するだけindexAction()で、リダイレクトが機能するはずです。

1) $this->_helper->name 経由でヘルパーを呼び出すと、direct() メソッドが呼び出され、リダイレクタ ヘルパーでメソッドが呼び出されます。gotoSimple($action, $controller = null, $module = null, array $params = array())

于 2012-07-31T16:25:55.730 に答える