Самый краткий способ подведения итогов проблемы:
Разработка завершена, и все было выполнено с использованием frontend_dev.php во время разработки и тестирования
Это означает, чточто все URL-адреса были следующими: server.com / frontend_dev.php / module / action / parm
Переход к производственной среде означает переключение сред и, следовательно, использование index.php вместо этого
server.com / index.php / module / action / parm
Частью перехода к производству является использование mod_rewrite в Apache2 для создания «индекса.php ”часть URL исчезает, но все еще работает
server.com / module / action / parm по-прежнему направляется на index.php
URL-адреса действительно появляются без части index.php, но маршрутизация Symfony теперь жалуется:
, т. Е. Server.com/goals, который перенаправляет на цели / index
- прекрасно, используя frontend_dev.php или index.php как явный контроллер
server.com / index.php / goal
- без использования явного контроллера (с помощью перезаписи):
[вт дек 14 12:59:51 2010] [ошибка] [клиент 75.16.181.113] Пустой модуль и /или действие после синтаксического анализа URL "/ goal /" (/)
Я убедился, что перезапись действительно направляется в index.php путем изменения перезаписи на что-то, что неt существует:
[вт 14 дек. 13:05:43 2010] [ошибка] [клиент 75.16.181.113] скрипт '/opt/www/projects/adam/web/index2.php' не найден или не можетк статистике
Я попытался перенаправить на frontend_dev.php, но мне предоставляется только дополнительная отладочная информация из symfony, ни одна из которых не помогает:
404 |Не найден |sfError404Exception Пустой модуль и / или действие после анализа URL-адреса "/ goal /" (/).
трассировки стека
1. at () в SF_SYMFONY_LIB_DIR / controller / sfFrontWebController.class.php строка 44 ...
2. в sfFrontWebController-> dispatch () в строке SF_SYMFONY_LIB_DIR / util / sfContext.class.php 170 ...
3. в sfContext-> dispatch () в строке SF_ROOT_DIR / web / frontend_dev.php 13 ...
Я пытался использовать опцию RewriteBase в .htaccess, но это не помогло, равно как и изменить значение true / false в строке конфигурации контроллеров
Я надеюсь, что этопредоставляет достаточно, чтобы понять, почему мы запутались, и может направить нас к решению.
Ниже приведены текущие строки конфигурации .htaccess и index / frontend
Index.php:
$ configuration = ProjectConfiguration :: getApplicationConfiguration ('frontend', 'prod', false);
Frontend_dev.php:
$ configuration =ProjectConfiguration :: getApplicationConfiguration ('frontend', 'dev', true);
.htaccess:
RewriteEngine On
# раскомментируйте следующую строку, если вывозникают проблемы с # получением no_script_name для работы #RewriteBase /
# мы пропускаем все файлы с помощью .something #RewriteCond% {REQUEST_URI} .. + $ #RewriteCond% {REQUEST_URI}! .html $ #RewriteRule. * -[L]
# мы проверяем, есть ли здесь версия .html (кеширование) RewriteRule ^ $ index.html [QSA] RewriteRule ^ ([^.] +) $ $ 1.html [QSA] RewriteCond% {REQUEST_FILENAME}! -F
# нет, поэтому мы перенаправляем на наш фронтальный веб-контроллер RewriteRule ^ (. *) $ Index.php [QSA, L]