Zendフレームワーク:「url not found」はインデックスコントローラでのみ、小文字の場合のみ

これは私の問題です:

私はaruba/linux上で動作する作業中のzendアプリケーションを持っています。 うまくいくようです。

私はいくつかのコントローラを持っています:インデックス、ユーザー、ビデオ、...

私が "http://www.foo.com/public/"と入力すれば、私のインデックスコントローラとインデックスアクションにアクセスできます。 私が「http://www.foo.com/public/user/register」と入力すると、私は自分のユーザーコントローラーに連絡してアクションを登録できます。

私が "http://www.foo.com/public/index/index"と入力すると、サーバーはURLを見つけられません:(

しかし、最も奇妙なことは、もし私が "http://www.foo.com/public/Index/index"(大文字Iに注意を払う)とタイプすれば動作するということです。

私は説明をしようとするが、私はそれを見つけられません:(

手伝って頂けますか??

事前に感謝、Gabriele。

PS:私のコンピュータのロケールでうまくいきます


更新

私は今日の午後に気づいていない動作:存在しないコントローラを呼び出すと、指定されたコントローラがないことを記述してカスタムエラーページを表示します。インデックスコントローラでは、代わりに404:urlが見つかりません...

私は絶対に何をすべきかわからない...私を助けてください!


RE-更新

私は、デフォルトのコントローラを 'index'から 'foo'に変更しました。私はすべてのファイル、クラス、フォルダの名前を正しく変更しました。アプリケーションはこの愚かなエラーなしでうまくいきます...

'index'という単語が何らかのバグを生むようです。 それは魔法のようなものです...

3
ローカル=ウィンドウ?はいの場合は、コントローラの名前を確認します。 IndexController.php /とクラス:IndexController extends ..
追加された 著者 opHASnoNAME,
あなたのエラーログには何かがありますか?
追加された 著者 opHASnoNAME,
あなたのhttpd.confをチェックしてください:Options Indexes FollowSymLinks MultiViewsが設定されていればMultiViewsを削除して削除します
追加された 著者 opHASnoNAME,
私はそれを書いていない場合は申し訳ありません:私は、Mac上では、Apacheサーバーの下に!だからLinux上と同じです...名前はあなたが書いた通りです!
追加された 著者 user1192448,
はい、次の行があります:[Tue Feb 07 09:49:09 2012] [error] [client 87.2。***。***]交渉:要求に一致するファイルが見つかりました:/ web/htdocs/www。 ***。com/home/public/index(何も交渉できませんでした)。
追加された 著者 user1192448,
私はaruba linuxで共有しているので、httpd.confファイルが表示されません...
追加された 著者 user1192448,
しかし、私はロケールサーバーでマルチビューオプションを設定しようとしましたが、アプリケーションは正しく動作しています!
追加された 著者 user1192448,

5 答え

私も同じ問題がありました。

問題は私のバーチャルホスト設定にありました。 私は私の仮想ホストの私のディレクトリに以下の設定をしていました:


            Options Indexes FollowSymLinks MultiViews ExecCGI
            AllowOverride All
            Order Deny,Allow
            Allow from all

MultiViewsの前にダッシュを置くと、問題が修正されました。

このような:


            Options Indexes FollowSymLinks -MultiViews ExecCGI
            AllowOverride All
            Order Deny,Allow
            Allow from all

希望が役立つ

4
追加された
また、 MultiView オプションを削除することもできます。デフォルトではオフになっています。私のapache2.4では、 MultiViews を明示的に除外したい場合は、すべてのオプションに + または -
追加された 著者 cypherabe,
これがあなたの問題を解決するのに役立ちましたら、それを答えとして受け入れてください:)
追加された 著者 Koen Hendriks,
どうもありがとうございました!!私が試してみます
追加された 著者 user1192448,

インデックスURLをインデックス/インデックスではなくインデックス/インデックスに変更してみてください いくつかの構成ではデフォルトでapache2がindexをデフォルトのインデックスとして選択します。

3
追加された

私はApache 2.2から2.4にアップグレードしたときに同じ問題に遭遇しました。私は基本的に、あるバージョンから次のバージョンへのhttpd-vhosts.phpファイルをコピーしました(アップグレードガイドに記載された変更を加えた後)。私のサイトは/ index以外のすべてのページで正常に動作しましたが、私がそれをやめた場合はホームページが読み込まれます。

ArneRieが元の応答スレッドで提供した答えは、私のために解決したものです。 confファイルからMultiViewsを削除すると、問題が解決されました。

2
追加された

私は "/ index"を "/ Index"に変更しました。

0
追加された
もう少し説明できますか?問題の原因は何ですか、厳密には大文字と小文字を区別するディレクトリですか?
追加された 著者 greedybuddha,

今日私はシミラーの問題を抱えていた。

他のすべてのコントローラが動作し、次のようにインデックスコントローラにルーティングされます。

    $router->addRoute("object", 
        new Zend_Controller_Router_Route_Regex("object/(\d+)",
            array(
                "controller" => "index",
                "action"     => "object"
            )
        )
    );

あまりにも動作します。

しかし、/ index/objectは、404 file not foundというエラーを表示します。

オプションのvhost設定で何かをする必要があります。私はそれらを完全に削除し、私の場合に役立ちました。

P.S.: Also you can direct your vhost on public folder so your links would look like: http://www.foo.com/user/register rather than http://www.foo.com/public/user/register

0
追加された