2015-05-29 56 views
2

我正在开发一个REST API与Slim。当我在本地主机上使用我的api时,一切正常,但是当我尝试在我的服务器上使用它时,它不能正常工作,返回index.php的内容。GET请求到一个API REST总是返回index.php文件

对于这个问题,我将使用Slim框架的示例应用程序。所以我的index.php是:

<?php 
require 'Slim/Slim.php'; 
\Slim\Slim::registerAutoloader(); 

$app = new \Slim\Slim(); 

$app->get('/hello/:name', function ($name) { 
    echo "Hello, $name"; 
}); 

$app->run(); 
?> 

我的文件夹estructure是:

/var/www/html/vendor/rest/ 
         libs/ 
          Slim 
         v1/ 
          .htaccess 
          index.php 

.htaccess文件是:

AddType x-mapp-php6 .php 
AddHandler x-mapp-php6 .php 

Options -Indexes 
Options -MultiViews 
Options +FollowSymLinks 
Options +Includes 

RewriteEngine on 
RewriteBase /vendor/rest/v1 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-l 

RewriteRule ^(.*)$ %{ENV:BASE}index.php [QSA,L] 

所以,当我写邮差(例如)

http://www.mydomain.es/vendor/rest/v1/hello/jose

我得到:

Postman result

当它应该返回

Hello, jose 

我已经几天的,我解决不了这个问题。哪里不对?也许.htaccess?

+0

如果内存为我服务,我错过了你的服务器上的一些php库。我不记得哪一个 – nafas

+0

如果你使用短打开的标签并且它的服务器设置没有启用,你会看到相同的结果 – slash197

+0

@slash197你能否更详细地解释一下。我不明白你。 –

回答

0

终于我解决了我的问题。我用这三行改变了.htaccess文件:

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule^index.php [QSA,L] 

现在一切正常。