0

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]

4

1 に答える 1

1

PHP から静的ファイルをサーバーするべきではありません。これは、次を使用する必要があることを意味します。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
于 2012-05-21T12:08:01.720 に答える