Всегда получайте ошибку 404 В Slim Framework при опущении индекса.php в URL

Я создал тестовое приложение hello world Slim, следуя инструкциям здесь.

когда я делаю этот вызов, я получаю ошибку 404:

http://my_server/my_app/hello/John

С другой стороны, когда я делаю этот вызов, он работает великолепно, поскольку я получаю сообщение "Привет, Джон":

http://my_server/my_app/index.php/hello/John

но, конечно, мне не нужен индекс.php в моих URL-адресах... Что может быть не так?

======= редактировать =======

Я забыл создать .htaccess файл, как это (после Slim Framework документация и в том же каталоге, что и index.php):

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]

теперь я получаю эту ошибку:

/physical_path_to_my_files/index.php was not found on this server

4 ответов


Если ваш файл htaccess находится в вашем /my_app каталог, измените свои правила на:

RewriteEngine On

RewriteBase /my_app/

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]

если он находится в корне документа, вам нужно добавить путь:

RewriteRule ^ /my_app/index.php [QSA,L]

также можно изменить .htaccess к следующему: (У меня была аналогичная проблема, и это решило ее для меня):

.реврайт:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.*)$ %{ENV:BASE}index.php [QSA,L]

если решение Jon Lin не работает, означает ваш .файл htaccess не работает. вы можете убедиться, что мое добавление строки мусора, как

RewriteEngine On
RewriteBase /loop/v1/

This is garbage line

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]

это приведет к ошибке 503 if .htaccess работает нормально, иначе вы не получите никакой ошибки.

Если вы не получили никакой ошибки, изменение не позволяет никому разрешать все в разделе каталога файла Apache conf или Httpd.conf


этот ресурс объясняет все, что нам нужно настроить, чтобы использовать slim на Ubuntu (это помогло мне решить мою проблему 404):

подводя итог, есть две вещи для настройки:

  1. активировать mod_rewrite, с a2enmod rewrite
  2. изменить Apache файл конфигурации (изменить AllowOverride None to AllowOverride All для корня документа)

Не забудьте перезапустить apache2 после изменений:service apache2 restart

Как Установка и настройка Slim Framework на Ubuntu 14.04