[英]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.