我想在我的Nginx服务器(Ubuntu 16.04)上有2个不同的位置。一张是我的HTML页面( page.com; page.com/sth/sth2 ),它是 / var / www / html ,另一张是我的PHP API( page .com / api; page.com/api/v1/test )在 / var / www / api 中。对API的每个请求都应转到api.php文件(我在那儿有路由)。
我正在尝试执行此操作,目前page.com/api/api.php可以工作,但是page.com/api/v1/test无法正常工作(我收到404 Not Found错误)。
root /var/www/html;
location ^~ /api/ {
root /var/www;
rewrite ^(.*)$ var/www/api/api.php last;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_param SCRIPT_FILENAME /var/www/api/api.php;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
}
location / {
index index.html;
try_files $uri $uri/ =404;
}
location ~ /\.ht {
deny all;
}
答案 0 :(得分:0)
只需将/ api /位置块与以下内容交换:
lookup_field
然后所有这些请求都发送到api.php,您就可以在那里处理路由了,就像您仍然可以这样做一样。
您可能也不需要此部分:
lookup_url_kwarg
因为Nginx始终不对.htaccess文件执行任何操作-因此没有安全风险。