2012-01-17 6 views
2

Я использую Zend Framework на Ubuntu 11.10 (моя локальная машина для разработчиков). Когда я перейти к моему приложению с этим URL, фронт-контроллер страница/индекс работает отлично:Zend Framework Дает ошибку 404 для контроллеров

http://localhost/myapp/public 

Так что я знаю, что по большей части все работает. Проблема возникает, когда я пытаюсь получить доступ к другому контроллеру с чем-то вроде:

http://localhost/myapp/public/faq 

Это возвращает ошибку 404 «запрашиваемом URL/MyApp/государственный/чаво не был найден на этом сервере.»

Я использовал Zend_Tool для создания контроллера типа «zf create controller faq», который дал мне FaqController.php с помощью indexAction() по умолчанию. Он также создал представление faq.phtml. Все это прекрасно работает на моем ноутбуке (Windows XP), поэтому я знаю, что это должно быть что-то с настройкой.

Вот мой .htaccess (это по умолчанию один):

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

В попытке заставить его работать, я добавил это в мой файл httpd.conf и перезапустить Apache:

<Directory /> 
    Options FollowSymLinks 
    AllowOverride All 
    Order allow,deny 
    Allow from all 
</Directory> 

Когда это не сработало, я попытался поместить это прямо в мой файл .htaccess, но это тоже не было. Что мне не хватает? Что останавливает Zend от возможности переписывать и направлять запросы?

+0

Я думаю, вы не должны получать доступ через общую папку непосредственно в URL-адресе, как вы настроили свой виртуальный хост? является .htaccess внутри общей папки? является общей папкой 'DocumentRoot' вашего сайта в настройках виртуального хоста? – jere

+0

Как выглядят папки вашего контроллера? –

+0

@JamesButler Это стандартный каталог Zend Framework, созданный "zf create project myapp" –

ответ

1

[РЕШИТЬ]

Спасибо за просмотр, я в конечном итоге найти решение. С Ubuntu в каталоге/etc/apache2/sites-enabled/находится файл с именем 000-default, который содержит параметры конфигурации.

Я не знал, что он был там, у него были все параметры AllowOverride равными None, поэтому я изменил их на All, перезапустил Apache и voila!

Для обеспечения всех, кто находит этот вопрос с помощью поиска имеет полную помощь, я хотел бы передать, чтобы убедиться mod_rewrite включен (шахта), открыв терминал и работает:

sudo a2enmod rewrite 

То есть как вы активируете модем Apache в Ubuntu.

Смежные вопросы