Slim没有意识到路由实际上是一个子目录:投掷404

时间:2015-10-21 10:29:48

标签: php .htaccess slim

我有像这样的文件夹结构

assets/
clients/
- assets/
- includes/
- .htaccess
- index.php
includes/
vendor/
views/
.htaccess
index.php

并且slim通常适用于该路径文件夹,但是如果我去 myroot.com/clients 期望它不受苗条控制,我的根文件夹的苗条会抛出404页。

奇怪的是,当我去 myroot.com/includes 时,它确实把它视为一个子目录,并列出了包含中的文件。

如果它有帮助,这就是根.htaccess中的所有内容

RewriteEngine On

# Some hosts may require you to use the `RewriteBase` directive.
# If you need to use the `RewriteBase` directive, it should be the
# absolute physical path to the directory that contains this htaccess file.
#

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

另外应该注意的是,客户端不使用Slim,只需使用vanilla php

编辑:确定导致问题的纤薄路线

我在所有命名路由的底部基本上都有一个'catch all'路由,所以我不必为我创建的每个标准页面模板创建一个新路由。但是,如果url是一个目录,我虽然苗条仍会取消这条路线?

$app->get('/:page', function ($page) use ($app) {
    $route = $app->router->getNamedRoute('standardRoute');
    $route->setParams(['page'=> $page,'subpage'=> ""]);
    $result = $route->dispatch();
});
$app->get('/:page/:subpage', function ($page,$subpage) use ($app) {
    $arr = $app->engine->returnData();
    $p = new JTProject();
    $projects = $p->projectList();

    $arr['projectlist'] = $projects;

    JtUtils::renderTemplate($app,$page."/".$subpage,$arr);
})->name('standardRoute');

0 个答案:

没有答案