簡體   English   中英

REST API的CakePHP .htaccess異常

[英]CakePHP .htaccess exception for REST API

我正在使用CakePHP創建REST API。 我在app / webroot / js文件夾中有我的Angular應用程序。 ui-router在工作,但是我試圖讓htaccess為其中包含/ rest /的URL設置例外,以便我可以進行如下的rest調用:/rest/posts.json

這是我的app / webroot / .htaccess:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule (.*)$ index.php/#$1 [L]
    RewriteRule ^rest/.* rest/$1 [L]

</IfModule>

為什么RewriteRule ^rest/.* rest/$1 [L]不在上面的index.php catchall上作例外?

你回答自己,不是嗎? 上面的規則是一個包羅萬象的規則,它將捕獲所有內容,因此將永遠不會遵循以下規則(除非您請求的是實際文件/目錄)。

如果您想將rest/* URL指向與index.php#...不同的位置,則必須將其放置在上方。 但是,您可能會開始重復一遍,因為我猜它也應受“非文件/目錄”條件的約束,因此我可能會對FILENAME條件使用跳過規則,例如

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule . - [S=2]
RewriteRule ^rest/.* index.php [L]
RewriteRule (.*)$ index.php/#$1 [L]

基本上是說,如果請求的資源是目錄或文件,請跳過接下來的兩個規則,如果不是,則首先檢查當前URL是否以rest/開頭,並將其轉發到正常的CakePHP進程,而不是使用哈希追加變體。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM