我正在使用silex建立一个网站,我相信这是一个n00b问题。如果网址不存在,我将我的htaccess设置(根据silex建议)重定向到我的主页。
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteBase /home
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
so / mysite / api / v1 / users将正确加载并显示JSON并列出所有用户,但/ mysite / api / v1 / somerandomfolder将重定向到主页。一切正常。
我遇到的问题是当我尝试/ mysite / api / v1 / users / 00001(00001是用户ID)时,它会将我重定向回主页而不是为特定用户显示JSON。
我的users文件夹中的index.php中的代码如下所示:
$users = array(
'00001'=> array(
'name' => 'John Doe',
'age' => '53',
'description' => '...',
'image' => 'john.jpg',
),
'00002' => array(
'name' => 'Jane Doe',
'age' => '27',
'description' => '...',
'image' => 'jane.jpg',
),
);
$app->get('/', function() use ($users) {
return json_encode($users);
});
$app->get('/{userid}', function (Silex\Application $app, $userid) use ($users) {
if (!isset($users[$userid])) {
$app->abort(404, "User ID {$userid} does not exist.");
}
return json_encode($users[$userid]);
});
$app->run();
我确信我缺少一些基本概念,但我无法弄清楚它是什么。
答案 0 :(得分:1)
路线是
$app->get('/mysite/api/v1/users/{userid}', function (Silex\Application $app, $userid) use ($users) {
}
RewriteBase必须是站点根目录的路径,相对于文档根目录。