Silex url参数路由不正确

时间:2015-09-10 20:26:35

标签: php .htaccess rest routing silex

我正在使用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();

我确信我缺少一些基本概念,但我无法弄清楚它是什么。

1 个答案:

答案 0 :(得分:1)

路线是

$app->get('/mysite/api/v1/users/{userid}', function (Silex\Application $app, $userid) use ($users) {
}

RewriteBase必须是站点根目录的路径,相对于文档根目录。