Slim框架和.htaccess URL重写

时间:2016-02-21 00:10:07

标签: .htaccess slim

我正在使用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}'

目前,/ w​​ww级别的.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提取到脚本中。

希望这是有道理的。请问有人给我指点吗?

0 个答案:

没有答案