nginx配置支持php的pathinfo模式配置方法
nginx模式不支持pathinfo模式,類似info.php/hello形式的url會(huì)被提示找不到頁(yè)面。下面的通過正則找出實(shí)際文件路徑和pathinfo部分的方法,讓nginx支持pathinfo。
location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; ##通過設(shè)置模擬出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; }
要點(diǎn):
1.~ \.php 后面不能有$ 以便能匹配所有 *.php/* 形式的url
2. 通過設(shè)置更改 SCRIPT_FILENAME
我在實(shí)際使用張將這段代碼融合到了fastcgi_params中。下面是我的nginx配置文件示例:
配置虛擬主機(jī)部分,支持pathinfo的nginx代碼如下:
## 在nginx.conf的server部分:
server { listen 8080; server_name localhost; location ~ \.php { include fastcgi.conf; } }
##要點(diǎn): \.php 后面沒有$,以便匹配所有 *.php/* 形式
##重點(diǎn)代碼見 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的重點(diǎn)部分 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; }
- PHP使用Nginx實(shí)現(xiàn)反向代理
- Win10 下安裝配置IIS + MySQL + nginx + php7.1.7
- 詳解Nginx 和 PHP 的兩種部署方式的對(duì)比
- PHP 網(wǎng)站修改默認(rèn)訪問文件的nginx配置
- Nginx下實(shí)現(xiàn)pathinfo及ThinkPHP的URL模式
- 詳解如何在CentOS7中使用Nginx和PHP7-FPM安裝Nextcloud
- Centos6.4 編譯安裝 nginx php的方法
- windows下RunHiddenConsole 啟動(dòng) nginx與php(RunHiddenConsole下載)
相關(guān)文章
nginx鏡像構(gòu)建的知識(shí)點(diǎn)及方法步驟詳解
這篇文章主要為大家介紹了nginx鏡像構(gòu)建的知識(shí)點(diǎn)詳解,<BR>有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08ubuntu系統(tǒng)中nginx啟動(dòng)腳本
這篇文章主要介紹了ubuntu系統(tǒng)中nginx啟動(dòng)腳本,可以實(shí)現(xiàn)nginx的自啟動(dòng),需要的朋友可以參考下2014-02-02nginx啟動(dòng)、配置及測(cè)試圖文詳解(全網(wǎng)最全)
nginx是一個(gè)輕量級(jí)的網(wǎng)頁(yè)服務(wù)器、方向代理服務(wù)器和電子郵件代理服務(wù)器,具有配置靈活、靜態(tài)資源高并發(fā)、系統(tǒng)資源占用少、擁有緩存服務(wù)等優(yōu)點(diǎn),這篇文章主要給大家介紹了關(guān)于nginx啟動(dòng)、配置及測(cè)試的相關(guān)資料,需要的朋友可以參考下2024-02-02Nginx的偽靜態(tài)配置中使用rewrite來實(shí)現(xiàn)自動(dòng)補(bǔ)全的實(shí)例
這篇文章主要介紹了Nginx的偽靜態(tài)配置中使用rewrite來實(shí)現(xiàn)自動(dòng)補(bǔ)全的實(shí)例,文中對(duì)rewrite的相關(guān)參數(shù)和正則表達(dá)使用也做了介紹,需要的朋友可以參考下2015-12-12