2

Zend_Controller_Router_Routeについて見つけたすべてのものを赤くしましたが、デフォルトのコントローラーを設定したり、URLから何かを除外したりする方法を見つけることができませんでした。例:

www.example.com/test/controler/action

「テスト」を無視するにはどうすればよいですか?

今、私は常にデフォルトのコントローラーとして「テスト」を取得します。

ありがとう、Ventsislav Angelov

4

2 に答える 2

3

これは、/public サブディレクトリの .htaccess で実行できます。

次のように別の RewriteCond を追加します。

RewriteCond %{REQUEST_URI} !^/test* [OR]

これで解決するはずです。

于 2012-06-21T13:17:13.917 に答える
0

あなたの例では、デフォルトルートを使用している場合、 url'test 'がモジュールになります。

www.example.com/test/controler/action //module = test, controller = controler, action = action

次の行を使用して、application.iniでこれら3つすべてのデフォルトを指定できます。

 resources.frontController.defaultcontrollername = 'index'
 resources.frontController.defaultaction = 'index'
 resources.frontController.defaultmodule = 'default'

あなたが興味を持っているかもしれない別の利用可能な設定:

resources.frontController.useDefaultControllerAlways = false

[編集] ルート/リクエストから文字列を本当にフィルタリングする必要がある場合。あなたはおそらくルートでそれを行うことができますが、私はそれを助けるのに十分なルートを知りません。(.htaccess以外の)別のオプションは、テストとリダイレクトです。多分次のようなものです:

public function preDispatch() {
       $request = $this->getRequest();
       if ($request->getController() = 'test' || $request->getAction() = 'test' || $request->getModule() = 'test' ) {
           $this->_redirect('url');
      }
    }

これは各コントローラーに配置できますが、プラグインとしてはうまく機能する可能性があります。もちろん、厄介なif()ステートメントの代わりにswitch()を使用することもできます。

うまくいけば、ルーターの達人の1人がより良い解決策を持ってさまよってしまうでしょう。

幸運を...

于 2012-06-21T13:31:42.523 に答える