Flight PHP REST服务总是返回“Hello World”

时间:2013-09-18 08:51:24

标签: php rest iis-7.5 windows-server-2008-r2 url-rewrite-module

我正在尝试使用Flight构建REST数据服务,因为它似乎很容易理解,但即便如此,我也无法使用简单的开箱即用演示。我正在使用IIS 7.5,URL Rewrite和PHP 5.4的Windows 2008 R2上运行。

我已将此.htaccess文件导入IIS URL重写模块:

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

IIS导入它没有任何问题:

IIS imports it without any problems

然后我有这个PHP代码:

<?PHP
require 'flight/Flight.php';

Flight::route("/", function (){
    echo 'Hello World';
});

Flight::route('/blog(/@year(/@month(/@day)))', function($year, $month, $day){
    // This will match the following URLS:
    // /blog/2012/12/10
    // /blog/2012/12
    // /blog/2012
    // /blog
    echo "Blog year=[$year], month=[$month], day=[$day]<br />";
});

Flight::start();
?>

如果我请求http://myserver/blog/2012http://myserver/what/ever我总是会收到首页文字“Hello World”。

对我来说,看起来URL重写是有效的,因为我至少没有得到404错误,但我错过了什么?

2 个答案:

答案 0 :(得分:0)

我知道这已经过时了,但无论如何,这是你的答案。

您的代码没有问题,这是IIS问题上的.htaccess。 尝试仅导入这两行:

替换此行:

RewriteRule ^(.*)$ index.php [QSA,L]

通过这一行:

RewriteRule ^.*$ index.php [QSA,L]

它应该有用。

答案 1 :(得分:0)

如果在路线中添加return true,则转到下一个。

Flight::route("/what", function (){
    echo 'Hello World';
    return true;
});

这将转至/ what / ever