#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». Спасибо.