我正在使用Slim框架创建一个Web API,现在尝试重写URL。我安装了wampp并具有以下文件夹结构
E:\wamp\www\
.htaccess
E:\wamp\www\SlimTest\
index.php
.htaccess (not sure if I really need one at this level...)
没有任何URL重写,我可以访问:http://localhost/SlimTest/index.php
来访问Slim脚本在index.php中,我有一个非常简单的Slim脚本:
$app->get('/hello/{name}', function ($request, $response, $args) {
return $response->write("Hello " . $args['name']);
});
要访问/ hello / name URI而不进行任何重写,我输入:http://localhost/SlimTest/index.php/hello/JoeDoe
我想要实现的是将网址:http://localhost/slim/api/v1网址重定向到:http://localhost/SlimTest/index.php以及之后的所有内容将index.php字符串视为搜索查询(所以它恰当地到达$app->get('/hello/{name}'
)
目前,/ www级别的.htaccess具有以下内容:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.*)/slim/api/v1/(.*)
RewriteRule ^slim/api/v1/(.*)$ /SlimTest/index.php/$1 [QSD,L]
例如,当我测试URL http://localhost/slim/api/v1/hello/John时,请求确实被带到index.php。但是,我打印出了URI,我得到的是:
echo 'current uri ' . $_SERVER["REQUEST_URI"];
"current uri /slim/api/v1/hello/John"
因此,正如您所看到的,wholr / slim / api / v1 / hello / John被视为PHP脚本的URI,而我只想将/ v1 /之后的所有内容作为URI提取到脚本中。
希望这是有道理的。请问有人给我指点吗?