Всегда получайте ошибку 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):
подводя итог, есть две вещи для настройки:
- активировать mod_rewrite, с
a2enmod rewrite
- изменить Apache
файл конфигурации (изменить
AllowOverride None
toAllowOverride All
для корня документа)
Не забудьте перезапустить apache2 после изменений:service apache2 restart