繁体   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