nginx配置支持php的pathinfo模式配置方法
nginx模式不支持pathinfo模式,類似info.php/hello形式的url會(huì)被提示找不到頁(yè)面。下面的通過(guò)正則找出實(shí)際文件路徑和pathinfo部分的方法,讓nginx支持pathinfo。
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
##通過(guò)設(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. 通過(guò)設(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 后面沒(méi)有$,以便匹配所有 *.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)訪問(wè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-08
ubuntu系統(tǒng)中nginx啟動(dòng)腳本
這篇文章主要介紹了ubuntu系統(tǒng)中nginx啟動(dòng)腳本,可以實(shí)現(xiàn)nginx的自啟動(dòng),需要的朋友可以參考下2014-02-02
nginx啟動(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-02
Nginx的偽靜態(tài)配置中使用rewrite來(lái)實(shí)現(xiàn)自動(dòng)補(bǔ)全的實(shí)例
這篇文章主要介紹了Nginx的偽靜態(tài)配置中使用rewrite來(lái)實(shí)現(xiàn)自動(dòng)補(bǔ)全的實(shí)例,文中對(duì)rewrite的相關(guān)參數(shù)和正則表達(dá)使用也做了介紹,需要的朋友可以參考下2015-12-12

