我遇到Nginx和Phalcon配置问题。
这是我的服务器块:
server {
listen 80;
server_name testapp.dev;
root /srv/http/testapp/public;
index index.php index.html index.htm;
charset utf-8;
location / {
try_files $uri/ /index.php?_url=$uri&$args;
}
location ~ \.php$ {
fastcgi_index index.php;
fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
include fastcgi_params;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~ /\.ht {
deny all;
}
}
来自Phalcon网站:https://olddocs.phalconphp.com/en/3.0.0/reference/nginx.html
一切正常,直到我没有像这样进入浏览器地址(当有"测试"模块)时:testapp.dev/test
。但是当我通过testapp.dev/test/
或testapp.dev/test/part
或testapp/test/part/
时,它会有效。
有趣的是,如果我输入不存在的模块名称,例如:testapp.dev/test2
,它会执行索引文件并显示模块定义路径不存在的错误。
总结如上:
testapp.dev/test
- 无法正常工作testapp.dev/test/
- 正在工作testapp.dev/test/part
- 正在工作testapp.dev/test/part/
- 正在工作testapp.dev/test2
- 模块不存在,但索引正在执行,因此,它正在运作testapp.dev/test2/
- 如上所述...... 当我进入:testapp.dev/index.php?url_=/test
它正在工作。
首先想到 - 我应该尝试在try_files
指令的末尾添加/,但是当我插入它时,它也不起作用。
我也尝试了这个: Phalcon and nginx - framework run only indexController。它就像上面那样......
此外,我试图添加这样的尾部斜杠:https://serverfault.com/questions/645667/php-file-downloaded-instead-of-executed-with-nginx-try-files,但没有成功。