2015-03-31 78 views
4

我正在嘗試編寫一個簡單的RESTful php應用程序。我正在嘗試編寫一個index.php路由器。PHP Rest API,重定向POST路由器

的.htaccess文件我現在有是

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$ 
RewriteRule api/^(.*)$ api/index.php?_url=/$1 [QSA,L] 
</IfModule> 

我加RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$強制結尾的斜線所看到here

調用var_dump($_POST);var_dump($_GET);仍然返回一個空數組,POST值仍然被丟棄。發送GET和POST都會在評估時返回GET:$_SERVER['REQUEST_METHOD'];

如何正確實施?另外,我不能使用庫並且必須實現我自己的路由器。

任何幫助或建議表示讚賞。


編輯:


從頭開始了:

的URL請求應http://localhost/api/*

位於API的文件夾

當前.htaccess文件看起來像這個:

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

其中controller.php坐在/var/www/api

虛擬主機文件中/etc/apache2/sites-available

題爲api.conf

,看起來像這樣:

<VirtualHost *:*> 
    ServerName test.example.com 
    ServerAlias www.test.example.com 
    DocumentRoot /var/www/api/ 
    <Directory "/var/www/api/"> 
     Allow from all 
     AllowOverride all 
     Options +Indexes 
    </Directory> 
</VirtualHost> 

仍然有同樣的問題:

The requested URL /api/something was not found on this server. 

回答

0

我解決了這個問題:

阿帕奇覆蓋了default.conf文件中的站點可用的文件夾,當我執行我忽略了一個更新...

我需要添加到000-default.conf

<Directory /var/www/> 
    AllowOverride All 

我發現了mod_rewrite現在關:

in_array('mod_rewrite', apache_get_modules()); 
//or 
var_dump(apache_get_modules()); 

所以要重新啓用:

a2enmod rewrite 

service apache2 restart 

希望這會幫助別人。