Проблемы с маршрутизацией Symfony 1.4 только при использовании index.php и mod_rewrite - PullRequest
0 голосов
/ 15 декабря 2010

Самый краткий способ подведения итогов проблемы:

  • Разработка завершена, и все было выполнено с использованием 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]

Ответы [ 2 ]

1 голос
/ 06 апреля 2014

У меня была похожая проблема, и для параметра 'AllowOverride' установлено значение ALL для WEB-папки Symfony в конфигурации виртуального хоста.

0 голосов
/ 15 декабря 2010

Добро пожаловать в переполнение стека.

Может быть, вы путаете маршрут "index" с "index.php"?

Теоретически все URL должны работать.

Я не могу вспомнить, работает ли косая черта, как server.com/goals/, или нет.Там есть гоча.

...