2015-05-29 57 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] 

現在一切正常。