欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

pathinfo php nginx

林子帆1年前7瀏覽0評論
Pathinfo 是什么? Pathinfo 是指 URL 路徑中不包含查詢字符串(Query String)部分的部分。例如: http://www.example.com/index.php/path/to/file 這個 URL 中,path/to/file 就是 Pathinfo。在 Pathinfo 中,使用與 URL 相同的斜線(/)作為分隔符,傳遞數(shù)據(jù)或標(biāo)記執(zhí)行腳本的特定部分。若使用 PHP,Pathinfo 就是 $_SERVER['PATH_INFO'] 變量所代表的內(nèi)容。 使用 Pathinfo 優(yōu)點: 1. 更美觀、更優(yōu)雅的 URL。 2. 提高 SEO 優(yōu)化。 3. 美好的用戶體驗。 下面是一個基本的 nginx 支持 pathinfo 的配置文件:
location ~ \.php$ {
fastcgi_pass   127.0.0.1:9000;
fastcgi_index  index.php;
fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
include        fastcgi_params;
}
它會將所有以 .php 結(jié)尾的請求都交給 PHP 解析,并加上 Pathinfo,將請求發(fā)送到 PHP-FPM。我們在 PHP 中可以通過 $_SERVER['PATH_INFO'] 獲取 Pathinfo 的值。 Nginx 實現(xiàn) Pathinfo 的原理: 在 URL 中,Nginx 會忽略 URI 中“?”后面跟隨的字符串,而將其作為 Query String,所以獲取 Query String 的值可使用 $_SERVER['QUERY_STRING'],通過 Nginx 引入 Pathinfo,傳遞地址欄中“?”前面的部分,它將會將 Pathinfo 的值附加在 SCRIPT_FILENAME 參數(shù)后面,使 PHP-FPM 認(rèn)為它是在執(zhí)行帶有 Pathinfo 的 URL。 舉個例子: 瀏覽器輸入的 URL 為: http://www.example.com/index.php/path/to/file?a=1&b=2 此時 Nginx 的 $request_uri 的值為: /index.php/path/to/file?a=1&b=2 $request_uri 值包含所有的 Query String 和 Pathinfo。因此,為了使 PHP-FPM 和 CodeIgniter 正確解析 Query String 和 Pathinfo,需要進行以下更改配置文件的設(shè)置:
fastcgi_param SCRIPT_FILENAME /var/www/html/public/index.php;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT /var/www/html/public;
fastcgi_param REMOTE_ADDR $remote_addr;
將 SCRIPT_FILENAME 替換為您的”index.php”。這將允許 PHP 明白需要處理哪一個文件做出回應(yīng)。我們使用 $request_uri 取代了 $fastcgi_script_name。這是因為 $request_uri 包含了路徑和查詢參數(shù),而 fastcgi_script_name 不是。 Pathinfo 的使用方式: 我們在 CodeIgniter 框架中舉個例子,如果我們想訪問如下 URL: http://www.example.com/index.php/path/to/file/param 我們需要在控制器中通過 $_SERVER['PATH_INFO'] 獲取 Pathinfo 信息,將 param 當(dāng)做訪問的參數(shù)傳遞給相應(yīng)處理的方法。 這是我們在控制器類中的一個方法:
public function somemethod()
{
// retrieve the fifth segment of path_info
$record_id = $this->uri->segment(5);
// retrieve the query string
$query_string = $this->input->server('QUERY_STRING');
// do what you need with the information
echo "Record id: " . $record_id;
echo "Query string: " . $query_string;
}
這個方法將返回: Record id: param Query string: a=1&b=2 如果您想在其他框架中使用 Pathinfo,可以遵循這個例子,自己實現(xiàn)相應(yīng)的邏輯。 總結(jié): Pathinfo 是一種 URL 的處理方式,通過它使 URL 更加優(yōu)雅,提升用戶體驗,提高 SEO 的效果。Nginx 配置中加入 Pathinfo 的支持,可以使您在PHP-FPM 中獲取到 Pathinfo 的值。在控制器或其他邏輯處理中獲取 Pathinfo 的值,亦可根據(jù)特定框架實現(xiàn)相應(yīng)的邏輯。
上一篇pathinfo php
下一篇password.php