1

我将 ToroPHP 托管在/api/. 我的/api/.htaccess

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php)
RewriteRule ^(.*)$ index.php/$1 [L]

这很好用。我将其转换为 nginx 等价物,大致如下:

最后重写 ^/api/(.*)$ /api/index.php/$1;

但这行不通。nginx 等价物应该是什么?

4

2 回答 2

2

这个问题确实属于http://serverfault.com,尽管如此:

使用尝试文件

不需要重写,使用try_files可以更有效地实现所需的结果:

server {
    ...


    location /api {
        # try_files $uri $uri/ index.php$uri;
        try_files $uri $uri/ index.php;
    }

}

}

请注意,没有必要将 url 作为参数传递给,index.php因为它已经可用$_SERVER['REQUEST_URI'](需要对 index.php 进行简单的修改才能工作)。

于 2013-07-21T13:28:06.697 回答
0
location /api {
     try_files $uri $uri/ index.php$request_uri; # or /api/index.php$request_uri
}
于 2013-07-21T21:46:28.423 回答