Вы не можете удалить второй маршрут $app->get('/')
, поскольку это маршрут по умолчанию по умолчанию, и вполне нормально получить 404, потому что $app->get('/:name', function ($name) {})
ожидает, что аргумент функции обратного вызова 'name'
отсутствует.
Вы пытаетесь следующее:
http://localhost/mysite/ --- Outputs Hello World
http://localhost/mysite/marcosh --- Outputs a 404 ??
Если это так, то, как a77icus5 предложил нам, возможно, придется заглянуть в файл htacess и тем, что структура проекта ...
I есть свежий Slim Skeleton установить, и я думал, что я разделю свою конфигурацию с вами ...
Мой каталог веб-проект выглядит следующим образом:
Webroot
-htaccess
- public
-- htaccess
-- assets
--- js
--- css
- templates
- app
- vendor
-- Slim
-- Twig
В первом .htaccess
находится в корневом проекте каталога я добавил:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
Здесь public
совпадает с именем приложения общих папок
Затем в .htaccess
находится в общей папке я добавил:
<IfModule mod_php5.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule^index.php [QSA,L]
</IfModule>
Затем в SLIM -> Environment.php (строка 142 - Виртуальный путь) и попытайтесь изменить следующим образом:
// Virtual path
// $env['PATH_INFO'] = substr_replace($requestUri, '', 0, strlen($physicalPath)); // <-- Remove physical path
$env['PATH_INFO'] = str_replace(str_replace('/public', "", dirname($_SERVER['PHP_SELF'])), '', "/".$requestUri); // remove public from URI
$env['PATH_INFO'] = str_replace('?' . $queryString, '', $env['PATH_INFO']); // <-- Remove query string
$env['PATH_INFO'] = '/' . ltrim($env['PATH_INFO'], '/'); // <-- Ensure leading slash
Да, пожалуйста, вы можете поделиться своей структурой проекта веба и файл (ы) .htaccess? Является ли текущий проект тонким скелетом? –
Я не использую Slim скелет. Мой index.php находится в общей папке. Я использую PHP, встроенный в веб-сервер, поэтому у меня нет файла .htaccess. – marcosh