Zend Frameworkを拡張Zend_Controller_Router_Route_Abstract
して、アプリケーションにカスタム ルーティングを追加します。私のmatch
メソッドfalse
は、要求パスが処理する必要のあるパスではないことを識別した場合に戻ります。したがって、静的リソース パスなどのパスでは、カスタム ルーティング クラスが返さfalse
れ、デフォルトのモジュール ルーターが処理します。
私の問題は、サイトのドキュメント ルートがパブリック ディレクトリを指している限り、すべて正常に動作することです。ドキュメント ルートをウィッチ パブリック フォルダーのディレクトリ (親ディレクトリ) に変更すると、http://mysite.com/css/global.cssのような静的リソースを要求しようとすると、次のエラーが表示されます。
エラーが発生しました ページが見つかりません 例外情報:
メッセージ: 無効なコントローラーが指定されました (css) スタック トレース: スタック トレース: ....
リクエスト パラメータ:
array ( 'controller' => 'css', 'action' => 'global.css', 'module' => 'default', )
それはメッセージの一部に過ぎず、他の部分は無関係です。
私の質問は、どうすればこの問題を解決できますか? パブリック ディレクトリの親にドキュメント ルートを保持しながら、カスタム ルーティング ロジックを保持し、静的コンテンツを提供するにはどうすればよいですか?
ドキュメントルートがパブリックディレクトリ内を指していないときに使用する .htaccess は次のとおりです。
RewriteEngine オン
RewriteRule ^.htaccess$ - [F]
RewriteCond %{REQUEST_URI} ="/" RewriteRule ^.*$ /public/index.php [NC,L]
RewriteCond %{REQUEST_URI} !^/public/. $ RewriteRule ^(. )$ /public/$1
RewriteCond %{REQUEST_FILENAME} -f RewriteRule ^.*$ - [NC,L]
RewriteRule ^/public/.*$ /public/index.php [NC,L]