我正在尝试使用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导入它没有任何问题:
然后我有这个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/2012
或http://myserver/what/ever
我总是会收到首页文字“Hello World”。
对我来说,看起来URL重写是有效的,因为我至少没有得到404错误,但我错过了什么?
答案 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