我正在使用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,因此找出如何在连接中设置它我认为应该解决问题。现在正在努力。
答案 0 :(得分:0)
切换到grunt-php,所有人都开始工作了。