2011-09-28 5 views
0

コントローラとして扱われることなく、httpを介してZend/public /ディレクトリにディレクトリを要求することはできますか?Zend Framework - コントローラとして/ public/directoryを扱わないでください

たとえば、Facebookのアプリケーションデータを含む/ public/facebook /ディレクトリがありますが、Zendは(デフォルトの動作として)私がhttp://mysite.com/facebookをリクエストしたときに「facebook controller missing」というエラーが表示されます。

答えて

0

これは、Zendで提供されているデフォルトのRewriteRulesがすべてのリクエストをZend Framework Bootstrapper(index.php)にリダイレクトするためです。

IMHOは、このルールに例外を追加することをお勧めします。次に、それを行う方法は複数あります。 RewriteCondを使用することができます(たとえば、/ public内の既存のディレクトリやファイルの一般的なリダイレクトは避けてください)。しかし、RewriteRule式でフィルタリングすることもできます。これはRewritreRuleに例外例である、のRewriteCond withouttて:あなたはこのURLのコンテンツを持っている場合は、ZFが見つかっFacebookのコントローラにしようとしないでください

RewriteRule !(public/facebook/(.*\.php))|(public/(.*\.pdf))|(externalauthent\.php)|(favicon.ico)|(images/(.*\.(ico|gif|jpg|png|bmp|JPG|JPEG|BMP|GIF|PNG)))|(css/(.*\.css))|(js/(.*\.*))$ /index.php [L] 
+0

うわー、それはいくつかのルールです!エラーがありますか?私はアクセスファイルに直接ペーストして500エラーがありますか?私はそのルールが何をしているのかは分かりませんが、最終的にZendのコントローラーの問題なしでhttp://mysite.com/facebook/app/index.phpをリクエストできるようにしたいと考えています。 – Owen

+0

最初にもっと簡単なものを試してみましょう。 'RewriteRule!(public/facebook/app/index \ .php)|(facebook/app/index \ .php)$ /index.php [L]'ここで私はparth正しいパスかどうかわからないのは、パスがリストされているものではなく(つまり、|)、index.phpにリダイレクトされている場合です。 – regilero

+0

なぜか分かりませんが、それも500エラーです。私はうまくいきました。Zend htaccessファイルの最後から二番目の行に次の行を追加しています:RewriteCond%{REQUEST_URI}!^/facebook – Owen

0

、あなたがFacebookの名前のフォルダ、およびファイルを追加する必要があります私にとっては、このフォルダ

0

この作品へのindex.php:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteCond %{REQUEST_URI} !^/public_directory_name 
RewriteRule ^.*$ index.php [NC,L] 

ちょうどあなたがZendのコントローラとして扱いたくないディレクトリの名前で「public_directory_name」を交換してください。

htaccess - do not rewrite in this case

関連する問題