nginx模式默认是不支持pathinfo模式的,类似index.php/index形式的url会被提示找不到页面。下面的通过正则找出实际文件路径和pathinfo部分的方法,让nginx支持pathinfo。
本文基于安装lnmp一键安装包,添加虚拟主机情况下进行修改。如你要添加一个网站www.linuxeye.com支持pathinfo,配置文件nginx.conf不用任何改变(个人习惯),参考lnmp一键安装包
cat vhost/www.linuxeye.com.conf
1. server {
2. listen 80;
3. server_name www.linuxeye.com;
4. access_log logs/www.linuxeye.com.log combined;
5. root /home/wwwroot/www.linuxeye.com;
6. error_page 404 /404.html;
7. index index.html index.htm index.php ;
8. location / {
9. index index.php;
10. if (!-e $request_filename) {
11. rewrite ^/(.*)$ /index.php/$1 last;
12. break;
13. }
14. }
15. location ~ \.php {
16. fastcgi_pass 127.0.0.1:9000;
17. fastcgi_index index.php;
18. include fcgi_pathinfo.conf;
19. set $real_script_name $fastcgi_script_name;
20. if ($fastcgi_script_name ~ “^(.+?\.php)(/.+)$”) {
21. set $real_script_name $1;
22. set $path_info $2;
23. }
24. fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
25. fastcgi_param SCRIPT_NAME $real_script_name;
26. fastcgi_param PATH_INFO $path_info;
27. }
28. }
要点:
1.~ \.php 后面不能有$ 以便能匹配所有 *.php/* 形式的url
2. 通过设置更改 SCRIPT_FILENAME
cat fcgi_pathinfo.conf
1. #fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
2. #fastcgi_param SCRIPT_NAME $fastcgi_script_name; #这两行是需要注释掉的,请注意
3. fastcgi_param QUERY_STRING $query_string;
4. fastcgi_param REQUEST_METHOD $request_method;
5. fastcgi_param CONTENT_TYPE $content_type;
6. fastcgi_param CONTENT_LENGTH $content_length;
7.
8. fastcgi_param REQUEST_URI $request_uri;
9. fastcgi_param DOCUMENT_URI $document_uri;
10. fastcgi_param DOCUMENT_ROOT $document_root;
11. fastcgi_param SERVER_PROTOCOL $server_protocol;
12. fastcgi_param HTTPS $https if_not_empty;
13.
14. fastcgi_param GATEWAY_INTERFACE CGI/1.1;
15. fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
16.
17. fastcgi_param REMOTE_ADDR $remote_addr;
18. fastcgi_param REMOTE_PORT $remote_port;
19. fastcgi_param SERVER_ADDR $server_addr;
20. fastcgi_param SERVER_PORT $server_port;
21. fastcgi_param SERVER_NAME $server_name;
22.
23. # PHP only, required if PHP was built with –enable-force-cgi-redirect
24. fastcgi_param REDIRECT_STATUS 200;
本文原地址:https://www.eqiday.cn/6.html
郑重声明内容版权声明:除非注明,否则皆为本站原创文章。如有侵权联系进行删除!