#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 при настройке сервера. Спасибо.