phpStudy2018 Nginx404
问题描述#
phpStudy2018 使用 php7+nginx,前半天还一直没问题,也不知道怎么了,后面加了一个站点配置,就突然出现 404 问题,查看日志
2019/07/02 19:56:12 [error] 12448#1000: *1 CreateFile() "D:/homestead/code/**/api/public/api/login" failed (3: The system cannot find the path specified), client: 127.0.0.1, server: **-api.local, request: "POST /api/login HTTP/1.1", host: "**-api.local"
1,查询许多关于目录斜杠问题
在 Windows 系统中,正斜杠 / 表示除法,用来进行整除运算;反斜杠 \ 用来表示目录。
在 Unix 系统中,/ 表示目录;\ 表示跳脱字符将特殊字符变成一般字符(如 enter,$, 空格等)。
然后就将 vhosts.conf
配置文件和 nginx.conf
的 root 都改为正斜杠
2,访问配置的虚拟目录时,可以访问到框架的入口文件,但无法访问到虚拟目录对应的模块(启用了项目分组)
集成环境自动生成的 vhost.conf 文件中缺少两行配置语句句
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php/$1 last;
}
这两句话的意思是指,如果请求的文件不存在,则进行路径的重写
改完以后的 vhost.conf 文件内容为
server {
listen 80;
# 网站域名
server_name demo.local ;
# 代码根目录
root "D:/homestead/code/demo/api/public";
location / {
# 默认请求的文件排序
index index.html index.htm index.php;
# 判断请求的文件是否存在
if (!-e $request_filename) {
# 如果不存在就进行重定向
rewrite ^/(.*)$ /index.php/$1 last;
}
#autoindex on;
}
location ~ \.php(.*)$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
include fastcgi_params;
}
}
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: