Структура Zend -модуля не работает должным образом

#zend-framework

#zend-framework

Вопрос:

Я пытаюсь сделать свое приложение структурированным по модулю, но у меня проблема… Мое приложение имеет локальный адрес «myapp» и ссылки на «C:/www/myapp/public » (Windows). Когда я пытаюсь получить доступ http://myapp (адрес, основанный на виртуальном хосте) Я запускаю модуль по умолчанию (модуль: по умолчанию, контроллер: индекс, действие: индекс). Но когда я пытаюсь открыть http://myapp/default или http://myapp/faxes Я получаю страницу браузера 404 (не исключение Zend). Что я делаю не так?
Это структура моего проекта: структура

И это мой сокращенный application.ini:

 [production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
phpSettings.upload_tmp_dir = APPLICATION_PATH "/../data/tmp"

bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"

appnamespace = "Application"

resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"

resources.frontController.params.displayExceptions = 0
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.frontController.env = APPLICATION_ENV
resources.modules[] =
resources.layout.layoutPath = APPLICATION_PATH "/layouts"
resources.layout.viewSuffix = "phtml"
resources.layout.layout = "index"
resources.view.titleSeparator = " - "
resources.view.doctype = "XHTML1_STRICT"
resources.view.contentType = "text/html; charset=utf-8"
resources.view.encoding = "utf-8"
resources.view.ViewSuffix = "phtml"
resources.session.save_path = APPLICATION_PATH "/../data/session"

pluginPaths.Duck_Application_Resource = LIBRARY_PATH "/Duck/Application/Resource"

autoloaderNamespaces[] = "Duck"
  

Комментарии:

1. Похоже, что ваша resources.frontController.controllerDirectory настройка неверна. Обычно проще всего запустить модуль по умолчанию вне каталога «modules».

Ответ №1:

Я собираюсь предположить, что вы используете Apache в качестве своего веб-сервера.

Проблема может быть в вашем общедоступном файле /.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]
  

Если эти правила уже существуют в вашем htaccess, то вам может потребоваться проверить, содержит ли файл конфигурации вашего веб-сервера (например, httpd.conf) что-то вроде:

 AccessFileName .htaccess
AllowOverride all
  

Документацию по вышеуказанному можно найти на странице Apache Core Features. Если у вас все еще возникают проблемы, убедитесь, что у вас установлен и правильно настроен модуль mod_rewrite Apache.

Комментарии:

1. Да, я использую Apache. У меня есть несколько виртуальных хостов, и все в порядке — «Разрешить переопределение всех» установлено для всего c:/www каталог — но этот проект не работает должным образом … «.htaccess» тоже правильный…

2. Вы были правы, как мне не стыдно… Раньше я настраивал «Apache LDAP basic auth» для каталога и установил там «AllowOverride none». Спасибо.