使用grunt-contrib-connect和connect-modrewrite-jgchristian获取Slim路由

时间:2015-10-25 01:52:29

标签: gruntjs rewrite slim

我正在使用connect-modrewrite-jgchristian,因为它应该正确地传递QSA标志。截至目前,索引页面正常工作,但内部页面都没有。这是Slim的股票.htaccess文件:

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

直接使用它将加载索引页面:

rewrite(['%{REQUEST_FILENAME} !-f ^ index.php [QSA,L]'])

尝试访问http://127.0.0.1:9000/news会抛出一个无法解决的错误:

Cannot GET /news

这样做稍微好一点 - 当你转到/news时会加载index.php,但路线不会被触发:

rewrite(['!\\.php|\\.html|\\.js|\\.css|\\.svg|\\.jp(e?)g|\\.png|\\.gif$ /index.php [QSA,L]'])

只是好好衡量,这是我的Slim路线,虽然我很确定它没有达到这个目的:

$app->get('/', function () use($app, $smarty) {
   $app->render('home.tpl', array('ParentTemplate' => $smarty->compile_id . '.tpl'));
})->name('home');

$app->get('/news', function () use($app, $smarty) {
   $app->render('news.tpl', array('ParentTemplate' => $smarty->compile_id . '.tpl'));
})->name('news');

有人试过这样的事吗?我现在很难过。

更新

我发现它只适用于正则表达式的第二个例子,但它看起来仍然没有传递任何信息苗条需要访问正确的路径。

更新2

跟踪了grunt-contrib-connect处理$ _SERVER变量的方式(我认为)。这是常规的apache:

'SCRIPT_NAME' => string '' (length=0)
'PATH_INFO' => string '/about' (length=6)

connect的服务器只有:

["SCRIPT_NAME"]=>  string(1) "/"

Slim将PATH_INFO设置为$ requestUri,因此找出如何在连接中设置它我认为应该解决问题。现在正在努力。

1 个答案:

答案 0 :(得分:0)

切换到grunt-php,所有人都开始工作了。