Zend Framework: "URL не найден" только с контроллером индекса, только в нижнем регистре - PullRequest
4 голосов
/ 06 февраля 2012

Это моя проблема:

У меня есть работающее приложение Zend, работающее на Aruba / Linux.Кажется, он работает хорошо.

У меня есть несколько контроллеров: индекс, пользователь, видео, ...

если я наберу "http://www.foo.com/public/", я смогу связаться с моим контроллером индекса и выполнить действие индекса.я набираю "http://www.foo.com/public/user/register" я могу связаться с моим пользовательским контроллером и зарегистрировать действие.

если я наберу" http://www.foo.com/public/index/index" адрес возврата сервера не найден: (*

Но самое странное, чтоесли я наберу "http://www.foo.com/public/Index/index" (обратите внимание на верхний регистр I), это сработает.

Я пытаюсь объяснить, но я не нашел его: (

Можете ли вы помочь мне ??

Заранее спасибо, Габриэле.

PS: в локали на моем компьютере это работает хорошо


ОБНОВЛЕНИЕ

поведение, которое я не сделалСегодня днем ​​заметим: если я позвоню несуществующему контроллеру, Zend покажет пользовательскую страницу ошибки с записью, что не указан контроллер. Вместо контроллера индекса я получаю 404: url not found ...

я абсолютно не знаю, что делать ... пожалуйста, помогите мне !!


ОБНОВЛЕНИЕ

Я изменил определениеAult контроллер из 'index' в 'foo', я правильно переименовал все файлы, классы и папки, и приложение работает хорошо, без этой глупой ошибки ...

Кажется, что слово "index" создает некоторыекакая-то ошибка ... это какая-то магия ...

Ответы [ 5 ]

4 голосов
/ 07 апреля 2014

У меня была такая же проблема.

Проблема была в настройках моего виртуального хоста. У меня были следующие настройки в моем каталоге моего виртуального хоста:

<Directory /home/koen/zend/ZendCMS/public>
            Options Indexes FollowSymLinks MultiViews ExecCGI
            AllowOverride All
            Order Deny,Allow
            Allow from all
</Directory>

Когда я ставлю черту перед MultiViews, и это решает проблему.

Как это:

<Directory /home/koen/zend/ZendCMS/public>
            Options Indexes FollowSymLinks -MultiViews ExecCGI
            AllowOverride All
            Order Deny,Allow
            Allow from all
</Directory>

Надеюсь, это поможет

3 голосов
/ 20 января 2013

Попробуйте изменить URL-адрес индекса на индекс / индекс, а не индекс / индекс apache2 по умолчанию в некоторых конфигурациях выбирает индекс как индекс по умолчанию. * файл, доступный в корне документа

2 голосов
/ 23 мая 2014

Я столкнулся с той же проблемой при обновлении с Apache 2.2 до 2.4.Я в основном скопировал файл httpd-vhosts.php из одной версии в другую (после внесения изменений, перечисленных в руководстве по обновлению).Мой сайт работал нормально для каждой страницы, кроме / index, хотя домашняя страница загрузилась бы, если бы я ее отключил.

Ответ, предоставленный ArneRie в оригинальной ветке ответов, - это то, что разрешило его для меня.Удаление MultiViews из файла conf решило проблему.

0 голосов
/ 14 марта 2015

Сегодня у меня была проблема с симлаларами.

Все остальные контроллеры работают, также маршрутизируются к контроллеру индекса следующим образом:

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

тоже работает.

Но / index/ object показывает ошибку 404 file not found.

Должно быть что-то с опциями в настройках vhost.Я полностью удалил их, и это помогло в моем случае.

PS: Также вы можете направить ваш vhost в общую папку, чтобы ваши ссылки выглядели так: http://www.foo.com/user/register, а не http://www.foo.com/public/user/register

0 голосов
/ 05 мая 2013

Я изменил "/ index" на "/ Index", и это сработало

...