我们在使用yaf的时候,做的是接口,
http://172.28.66.194:8029/Index/index
我们的接口地址是这样的,访问 home模块下 Index 控制器 index 方法
有一日,我们把接口写成了 http://172.28.66.194:8029/index.php/Index/index
服务器就报错了
Error Msg:Failed opening controller script /usr/local/nginx/html/testyaf/application/controllers/Ndex.php: No such file or directory
怎么会去找 Ndex.php 这个文件呢?
难道是我服务器nginx 隐藏了 index.php 这个文件?
把服务器nginx配置提供一下,代码如下:
server { listen 8029; client_max_body_size 100m; server_name localhost; index index.php index.html; root /usr/local/nginx/html/testyaf; #error_page 404 = /404/index.html; location / { root /usr/local/nginx/html/testyaf; index index.php; } if (!-e $request_filename) { #rewrite "/category/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)" /category.php?categories_name=$1&categories_code=$2 last; rewrite ^/(.*) /index.php/$1 last; } location ~ \.php(/|$) { fastcgi_pass 127.0.0.1:9007; fastcgi_index index.php; fastcgi_split_path_info ^(.+\.php)(.*)$; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
实验:
我把
rewrite ^/(.*) /index.php/$1 last;
这行代码注释,可以访问吗?
注释掉 发现可以了。
难道和这个有关系?
那如果采用这种方式访问,还能处理吗?
http://172.28.66.194:8029/Index/index
发现隐藏index.php 后,文件找不到了。
难道index.php yaf没有做兼容处理?
隐藏index.php 后,就不能写index.php/index/index 这样的路径了?
先把现象写在这里吧,我没有做深入的研究。后续知道再补充...