URLが次のようになる状況を想像してみてください
/ catalog / sectionIdent?page = 1
ここで、ページパラメータはオプションです。
もちろん、カスタムルートを定義する必要があります。次のコードを検討してください。
$route = new Zend_Controller_Router_Route_Regex(
'catalog/([-a-z]+)(?:\?page=([0-9]*))?',
array('controller'=>'catalog','action'=>'list','page'=>''),
array(1=>'section',2=>'page'),
'catalog/%s?page=%d'
);
$router->addRoute('catalog-section-page',$route);
ただし、このルートは「?」でトリガーされません。URLの記号。
それなし '?' (たとえば、エスケープされた「!」記号をパターンに追加することにより)すべてが正常に機能します。'?'を達成する方法はありますか?カスタム定義の正規表現ルートに存在しますか?たぶん私はパターンで何か間違ったことをしていますか?
PS:「?」の代わりに「/」を使用することを提案しないでください。質問は、Zend_Controller_Router_Route_Regex実装のパターン制限に関するものです。