2013-07-09 25 views
-1

我建立了一個REST API和終點重寫是MOD清潔API終點

/var/www/site/restapi/v1 

現在我設置類似

Alias /api/v1 /var/www/site/restapi/v1 

因此,如果虛擬主機配置我使用url http://site.com/api/v1它退到裏面/restapi/v1

但是,index.php文件AP​​I調用可以像
http://site.com/api/v1/Auth/login和處理,我把.htacess/restapi/v1作爲

RewriteEngine On 
RewriteRule ^(.*)/(.*) index.php?resource=$1&method=$2 

而且這是行不通的。我做了一些研究,發現在虛擬主機的配置,如果我改變

Options Indexes FollowSymLinks MultiViews 

Options Indexes FollowSymLinks 

然後,它的工作原理,但問題是,當我使用GET則變得

獲取資源
"Auth/login" 

如何添加清潔API網址,而不必刪除多視圖,並使用與

重新寫
+0

你的意思是「它變成了」Auth/login「」?這句話對我來說沒有多大意義。此外,嘗試比「不行」更具體 - 描述發生了什麼。 – Artefacto

+0

確認「Auth/login」意味着在/ restapi/v1裏面我有index.php文件,當我使用$ resource = $ _GET [「resource」] $資源包含「Auth/login」時,多視圖。如果我保持多視圖,然後我得到404頁未找到錯誤。 –

+0

以下是我稱爲api方法的示例,網址爲http://site.com/api/v1/Auth/login。在虛擬主機中,我有Alias/api/v1/var/www/site/restapi/v1,並在restapi/v1文件夾內有index.php文件。 index.php獲取資源和方法的值,爲此,我在./ restapi/v1中添加了帶有重寫規則的.htaccess作爲RewriteRule ^(。*)/(。*)index.php?resource = $ 1&method = $ 2。 –

回答

1

如果正確地明白和問題是$resource也包括的方法中,然後嘗試改變第一捕獲組這樣

RewriteRule ^([^/]+)/(.*) index.php?resource=$1&method=$2 [QSA] 

,或者使用懶惰匹配代替(.*?)。

我不知道爲什麼MultiView會發生衝突;可能你有其他一些名稱衝突的文件。檢查您的日誌文件,可能在增加詳細程度之後。

+0

你搖滾。現在這適用於您提供的重寫規則。頁面未找到問題是由於我在/ restapi/v1文件夾中有一個名爲Auth.class.php的類,因爲您解釋它是導致該問題的同名文件。我已經把所有的課程都移到了一個子文件夾中,而且現在看起來都很順利。非常感謝你的幫助 :) –