Базовая настройка LAMP с CentOS. Почему маршрутизатор Zend Framework не будет работать?

#php #zend-framework #mod-rewrite #routes

#php #zend-framework #мод-перезапись #маршруты

Вопрос:

Итак, у меня есть базовая настройка веб-сервера со стеком LAMP на CentOS. В нем есть mod_rewrite и все базовые модули. Маршрутизация, которую я использовал, работает на других серверах и локально. Но когда я пытаюсь использовать маршруты на новом сервере, они выдают мне ошибку 404. Теперь проблема в том, что работают обычные маршруты по умолчанию (т. Е. / index / my-page работает, но специальный маршрут / my-page не работает на этом сервере), поэтому я знаю, что mod-rewrite запускается правильно. Кроме того, нет реальных файлов с названиями маршрутов, поэтому там нет конфликта.

Я предполагаю, что что-то настроено неправильно для маршрутизатора, поскольку я делал это раньше таким же образом, и у меня не было проблем. Мне интересно, знает ли кто-нибудь какие-либо потенциальные мелочи, которые могут потребоваться маршрутизатору для запуска, которые я, возможно, пропустил.

Спасибо за любую информацию.

ОБНОВЛЕНИЕ: Вот записи перезаписи htaccess, которые я пробовал

 RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule !.(js|ico|txt|gif|jpg|png|css)$ index.php
  

и (от другого разработчика, с которым я работаю)

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

Вот routes.xml помимо дополнительной разметки для окружений:

     <routes>
        <home>
            <route>/home</route>
            <defaults>
                <controller>index</controller>
                <action>index</action>
            </defaults>
        </home>
        <lifetime-solutions-annuity>
            <route>/lifetime-solutions-annuity</route>
            <defaults>
                <controller>index</controller>
                <action>lifetime-solutions-annuity</action>
            </defaults>
        </lifetime-solutions-annuity>
        <indexed-universal-life>
            <route>/indexed-universal-life</route>
            <defaults>
                <controller>index</controller>
                <action>indexed-universal-life</action>
            </defaults>
        </indexed-universal-life>
        <wellness-for-life>
            <route>/wellness-for-life</route>
            <defaults>
                <controller>index</controller>
                <action>wellness-for-life</action>
            </defaults>
        </wellness-for-life>
        <join>
            <route>/join</route>
            <defaults>
                <controller>index</controller>
                <action>join</action>
            </defaults>
        </join>

    </routes>
  

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

1. Это не относится к ServerFault, поскольку проблема маршрутизации может быть связана с правилами маршрутизации в ZF, что, безусловно, не является проблемой конфигурации сервера. @gokujou, не могли бы вы показать нам свои .htaccess и все ваши правила маршрутизации, пожалуйста?

2. Я добавил их выше. Я примерно на 80% уверен, что это проблема скорее с ZF, чем с сервером, но сервер может быть возможным.

3. Какая версия PHP у вас? У меня на CentOS 5.5 установлен PHP 5.1.6, который намного ниже требуемого PHP 5.2.4 для ZF 1.11.

Ответ №1:

Вы уверены, что установлен AllowOverride All или, по крайней мере, AllowOverride FileInfo? Похоже, что Apache игнорирует файл .htaccess.

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

1. Но тогда почему маршрутизация по умолчанию для ZF все еще будет работать? Для этого все еще используется перезапись.

2. Это сработало, я бы подумал, что, поскольку работают маршруты по умолчанию, я установил все необходимые настройки. Не заметил, что забыл установить AllowOverride при настройке сервера. Спасибо.