我有一个如下所示的 nginx 配置:
location ^~ /movies {
alias /var/dp.cx/movies/current/public;
fastcgi_index index.php;
try_files $uri /movies/index.php;
location ~* \.php {
fastcgi_pass unix:/run/php/php7.1-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(.*)$;
include /etc/nginx/fastcgi_params;
}
}
这是一个 Laravel 应用程序,几乎完全开箱即用。但是,我对此配置有几个小问题。
- 命中
/movies
触发 404。命中/movies/
成功。 - 点击其中一个分页 URL(
/movies/test?page=2
)没有来自查询字符串的信息。
我不确定我在哪里找到了这个配置,但它似乎是我为 nginx + fpm 找到的带有子目录 URL 的最接近“工作”配置。
答案1
点击 /movies 会触发 404。点击 /movies/ 可成功。
要在服务器级别解决这个问题...请在现有的电影位置块旁边添加以下位置块...
location = /movies {
return 301 $scheme://$host/movies/;
}
点击其中一个分页 URL (/movies/test?page=2) 没有来自查询字符串的信息。
这是由于try_files
行未传递查询字符串所致。要传递它,使用以下try_files
指令即可...
try_files $uri /movies/index.php$is_args$args;
直接引自http://nginx.org/en/docs/http/ngx_http_core_module.html...
$is_args - 如果请求行有参数则为“?”,否则为空字符串。