国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

云服務(wù)器|WEB服務(wù)器|FTP服務(wù)器|郵件服務(wù)器|虛擬主機(jī)|服務(wù)器安全|DNS服務(wù)器|服務(wù)器知識|Nginx|IIS|Tomcat|

服務(wù)器之家 - 服務(wù)器技術(shù) - Nginx - nginx下支持PATH_INFO的方法實例詳解

nginx下支持PATH_INFO的方法實例詳解

2019-11-10 15:48Charlie Nginx

這篇文章主要介紹了nginx下支持PATH_INFO的方法,結(jié)合實例形式詳細(xì)分析了nginx下使用PATH_INFO模式的具體方法與相關(guān)使用技巧,需要的朋友可以參考下

本文實例分析了nginx下支持PATH_INFO的方法。分享給大家供大家參考,具體如下:

要想讓nginx支持PATH_INFO,首先需要知道什么是pathinfo,為什么要用pathinfo?

pathinfo不是nginx的功能,pathinfo是php的功能。

php中有兩個pathinfo,一個是環(huán)境變量$_SERVER['PATH_INFO'];另一個是pathinfo函數(shù),pathinfo() 函數(shù)以數(shù)組的形式返回文件路徑的信息;。

nginx能做的只是對$_SERVER['PATH_INFO]值的設(shè)置。

下面我們舉例說明比較直觀。先說php中兩種pathinfo的作用,再說如何讓nginx支持pathinfo。

php中的兩個pathinfo

php中的pathinfo()

pathinfo()函數(shù)可以對輸入的路徑進(jìn)行判斷,以數(shù)組的形式返回文件路徑的信息,數(shù)組包含以下元素。

[dirname]  路徑的目錄
[basename] 帶后綴 文件名
[extension]  文件后綴
[filename]  不帶后綴文件名(需php5.2以上版本)

例如

?
1
2
3
<?php
print_r(pathinfo("/nginx/test.txt"));
?>

輸出

?
1
2
3
4
5
6
7
Array
(
  [dirname] => /nginx
  [basename] => test.txt
  [extension] => txt
  [filename] => test
)

php中的$_SERVER['PATH_INFO']

PHP中的全局變量$_SERVER['PATH_INFO'],PATH_INFO是一個CGI 1.1的標(biāo)準(zhǔn),經(jīng)常用來做為傳參載體。

被很多系統(tǒng)用來優(yōu)化url路徑格式,最著名的如THINKPHP框架。

對于下面這個網(wǎng)址:

http://www.test.cn/index.php/test/my.html?c=index&m=search

我們可以得到 $_SERVER['PATH_INFO'] = '/test/my.html',而此時 $_SERVER['QUERY_STRING'] = 'c=index&m=search';

如果不借助高級方法,php中http://www.test.com/index.php?type=search 這樣的URL很常見,大多數(shù)人可能會覺得不太美觀而且對于搜索引擎也是非常不友好的(實際上有沒有影響未知),因為現(xiàn)在的搜索引擎已經(jīng)很智能了,可以收入帶參數(shù)的后綴網(wǎng)頁,不過大家出于整潔的考慮還是想希望能夠重寫URL,

下面是一段解析利用PATH_INFO的進(jìn)行重寫的非常簡單的代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
<?php
if(!isset($_SERVER['PATH_INFO'])) {
  $pathinfo = 'default';
} else {
  $pathinfo = explode('/', $_SERVER['PATH_INFO']);
}
if(is_array($pathinfo) && !empty($pathinfo)) {
  $page = $pathinfo[1];
} else {
  $page = 'default.php';
}
?>

有了以上認(rèn)識我們就可以介入nginx對$_SERVER['PATH_INFO']支持的問題了。在這之前還要介紹一個php.ini中的配置參數(shù)cgi.fix_pathinfo,它是用來對設(shè)置cgi模式下為php是否提供絕對路徑信息或PATH_INFO信息。沒有這個參數(shù)之前PHP設(shè)置絕對路徑PATH_TRANSLATED的值為SCRIPT_FILENAME,沒有PATH_INFO值。設(shè)置這個參數(shù)為cgi.fix_pathinfo=1后,cgi設(shè)置完整的路徑信息PATH_TRANSLATED的值為SCRIPT_FILENAME,并且設(shè)置PATH_INFO信息;如果設(shè)為cgi.fix_pathinfo=0則只設(shè)置絕對路徑PATH_TRANSLATED的值為SCRIPT_FILENAME。cgi.fix_pathinfo的默認(rèn)值是1。

nginx默認(rèn)是不會設(shè)置PATH_INFO環(huán)境變量的的值,需要php使用cgi.fix_pathinfo=1來完成路徑信息的獲取,但同時會帶來安全隱患,需要把cgi.fix_pathinfo=0設(shè)置為0,這樣php就獲取不到PATH_INFO信息,那些依賴PATH_INFO進(jìn)行URL美化的程序就失效了。

1.可以通過rewrite方式代替php中的PATH_INFO

實例:thinkphp的pathinfo解決方案

設(shè)置URL_MODEL=2

?
1
2
3
4
5
location / {
  if (!-e $request_filename){
    rewrite ^/(.*)$ /index.php?s=/$1 last;
  }
}

2.nginx配置文件中設(shè)置PATH_INFO值

請求的網(wǎng)址是/abc/index.php/abc

PATH_INFO的值是/abc
SCRIPT_FILENAME的值是$doucment_root/abc/index.php
SCRIPT_NAME /abc/index.php

舊版本的nginx使用如下方式配置

?
1
2
3
4
5
6
7
8
9
10
11
12
13
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;
  fastcgi_index index.php;
  fastcgi_param SCRIPT_FILENAME $document_root$script;
  fastcgi_param SCRIPT_NAME $script;
  fastcgi_param PATH_INFO $path_info;
}

新版本的nginx也可以使用fastcgi_split_path_info指令來設(shè)置PATH_INFO,舊的方式不再推薦使用,在location段添加如下配置。

?
1
2
3
4
5
6
7
8
location ~ ^.+\.php {
 (...)
 fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
 fastcgi_param SCRIPT_FILENAME /path/to/php$fastcgi_script_name;
 fastcgi_param PATH_INFO $fastcgi_path_info;
 fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
 (...)
}

最后可能有人要問為什么apache不會出現(xiàn)這個問題?

apache一般是以模塊的方式運(yùn)行php,apache可以對$_SERVER['PATH_INFO']的值進(jìn)行設(shè)置,不需要另外配置。

本文永久地址:http://blog.it985.com/7768.html
本文出自 IT985博客 ,轉(zhuǎn)載時請注明出處及相應(yīng)鏈接。

希望本文所述對大家nginx服務(wù)器配置有所幫助。

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 天堂中文资源在线 | 99国产在线 | 日韩中文在线 | 亚洲欧美视频二区 | 国产精品免费大片 | 亚洲日本国产 | 久草热8精品视频在线观看 久久亚洲精品中文字幕 | 国产亚洲一区二区三区 | 国产精品a久久久久 | av影音| 亚洲自拍小视频 | 蜜月久综合久久综合国产 | 免费一级毛片免费播放 | 最近韩国日本免费观看mv免费版 | 黄色短视频在线观看 | 欧美精品成人 | 日韩在线中文字幕 | 国产精品中文字幕在线 | 午夜欧美一区二区三区在线播放 | 日韩成人av电影在线观看 | 日韩蜜桃| 国产日韩欧美一区二区 | 免费成人在线视频观看 | 亚洲国产成人久久 | 午夜资源 | 成人精品久久久 | 欧美黑人一级爽快片淫片高清 | 欧美一区永久视频免费观看 | 国产日韩欧美不卡 | 小泽玛丽娅 | 日韩精品一二三区 | 精品在线视频一区 | 国产成人精品一区 | 久久久久久国产精品 | 亚洲夜幕久久日韩精品一区 | 一本大的之伊人 | 精品久久一区 | 黄视频网页 | a级毛片黄 | 日韩精品一区二区三区视频播放 | 午夜视频在线免费看 |