nginx模式不支持pathinfo模式,类似info.php/hello形式的url会被提示找不到页面。下面的通过正则找出实际文件路径和pathinfo部分的方法,让nginx支持pathinfo。
location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; ##通过设置模拟出pathinfo set $path_info “”; set $real_script_name $fastcgi_script_name; if ($fastcgi_script_name ~ “^(.+?\.php)(/.+)$”) { set $real_script_name $1; set $path_info $2; } fastcgi_param SCRIPT_FILENAME $document_root$real_script_name; fastcgi_param SCRIPT_NAME $real_script_name; fastcgi_param PATH_INFO $path_info; include fastcgi_params; }
要点:
1.~ \.php 后面不能有$ 以便能匹配所有 *.php/* 形式的url
2. 通过设置更改 SCRIPT_FILENAME
我在实际使用张将这段代码融合到了fastcgi_params中。下面是我的nginx配置文件示例:
配置虚拟主机部分,支持pathinfo的nginx代码如下:
## 在nginx.conf的server部分:
server { listen 8080; server_name localhost; location ~ \.php { include fastcgi.conf; } }
##要点: \.php 后面没有$,以便匹配所有 *.php/* 形式
##重点代码见 fastcgi.conf 开头部分
fastcgi.conf 代码如下:
fastcgi_pass 127.0.0.1:9000; ##fastcgi_index index.php; set $path_info ""; set $real_script_name $fastcgi_script_name; if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") { set $real_script_name $1; set $path_info $2; } fastcgi_param SCRIPT_FILENAME $document_root$real_script_name; fastcgi_param SCRIPT_NAME $real_script_name; fastcgi_param PATH_INFO $path_info; ## 以上是支持pathinfo的重点部分 fastcgi_param GATEWAY_INTERFACE CGI/1.1; fastcgi_param SERVER_SOFTWARE nginx; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; #fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; #fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param REQUEST_URI $request_uri; fastcgi_param DOCUMENT_URI $document_uri; fastcgi_param DOCUMENT_ROOT $document_root; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param REMOTE_ADDR $remote_addr; fastcgi_param REMOTE_PORT $remote_port; fastcgi_param SERVER_ADDR $server_addr; fastcgi_param SERVER_PORT $server_port; fastcgi_param SERVER_NAME $server_name; # PHP only, required if PHP was built with --enable-force-cgi-redirect #fastcgi_param REDIRECT_STATUS 200;
自己的配置:
server { listen 80; server_name www.touchopenid.com; index index.html index.htm index.php; root /data0/htdocs/openid; location ~ \.php($|/) { set $script $uri; set $path_info ""; if ($uri ~ "^(.+\.php)(/.+)") { set $script $1; set $path_info $2; } fastcgi_pass 127.0.0.1:9000; include fastcgi_params; fastcgi_param PATH_INFO $path_info; fastcgi_param SCRIPT_FILENAME $document_root$script; fastcgi_param SCRIPT_NAME $script; }
本文向大家介绍Nginx下配置pathinfo及ThinkPHP的URL Rewrite模式支持,包括了Nginx下配置pathinfo及ThinkPHP的URL Rewrite模式支持的使用技巧和注意事项,需要的朋友参考一下 打开Nginx的配置文件 /usr/local/nginx/conf/nginx.conf 一般是在这个路径,根据你的安装路径可能有所变化。如果你配置了vhost,而且只需
本文向大家介绍nginx中配置pathinfo模式示例,包括了nginx中配置pathinfo模式示例的使用技巧和注意事项,需要的朋友参考一下 缘由 很久不使用apache了,渐渐对apache感到陌生,因为朋友有个ZendFramework框架从apache移到nginx下,需要pathinfo模式支持。 网上海搜 于是开始搜索nginx+pathinfo相关文章,一开以为很容易就会配置好。因为
本文向大家介绍让Nginx支持shtml格式的配置方法,包括了让Nginx支持shtml格式的配置方法的使用技巧和注意事项,需要的朋友参考一下 对于静态网站有公共头尾需要包含,又不想用动态网页编写的,那么shtml是最佳选择了。shtml可以包含指定文件到文档中如同PHP中的include功能类似。 Nginx本身已经支持了shtml格式文件解析,但默认是不开启的,需要手动开启。 打开Nginx配
本文向大家介绍Ubuntu下Nginx配置ThinkPHP的Pathinfo和URl Rewrite模式,包括了Ubuntu下Nginx配置ThinkPHP的Pathinfo和URl Rewrite模式的使用技巧和注意事项,需要的朋友参考一下 概述 在上一篇文章Nginx配置Thinkphp支持URL Rewrite中已经介绍了如何配置Nginx支持ThinkPHP的URL Rewrite,但是上
本文向大家介绍Nginx配置PATHINFO隐藏thinkphp index.php,包括了Nginx配置PATHINFO隐藏thinkphp index.php的使用技巧和注意事项,需要的朋友参考一下 Nginx配置PATHINFO隐藏index.php Nginx配置文件里放入这段代码
本文向大家介绍详解nginx使用ssl模块配置HTTPS支持,包括了详解nginx使用ssl模块配置HTTPS支持的使用技巧和注意事项,需要的朋友参考一下 默认情况下ssl模块并未被安装,如果要使用该模块则需要在编译时指定–with-http_ssl_module参数,安装模块依赖于OpenSSL库和一些引用文件,通常这些文件并不在同一个软件包中。通常这个文件名类似libssl-dev。 生成证书