按照Simple REST server in php教程,我要为它设置重写规则。唯一的问题是我有nginx
RewriteRule ^$ index.php [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [QSA,L]
我试过这样的事情
location / {
rewrite ^/api/$ /api/index.php last;
rewrite ^/api/(.*)$ /api/index.php last;
}
但REST服务器返回
{
"error": {
"code": 404,
"message": "Not Found"
}
}
我想这与丢失的RuleCond有关,但我不知道如何转换它们。
答案 0 :(得分:0)
您必须从具体规则中抽象出来并理解它们的含义。此Apache配置表示存在所需文件或文件夹 - 提供服务,否则提供index.php
。在nginx中,我们使用try_files
指令。
如果我理解正确,你需要在/api/
文件夹中,所以这里有配置的想法:
index index.php;
location /api/ {
try_files $uri $uri/ /api/index.php;
}
location ~ \.php$ {
# PHP rules
}