溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

PATH_INFO模式是什么

發(fā)布時間:2021-10-12 11:41:11 來源:億速云 閱讀:131 作者:iii 欄目:編程語言

本篇內(nèi)容介紹了“PATH_INFO模式是什么”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!

一:PATH_INFO 模式是什么?

PATH_INFO 模式是偽靜態(tài)的一種。

我們可以使用PATH_INFO來代替Rewrite來實現(xiàn)偽靜態(tài)頁面, 另外不少PHP框架也使用PATH_INFO來作為路由載體

偽靜態(tài)頁面是靜態(tài)URL與動態(tài)URL互通的一個橋梁,它是指動態(tài)網(wǎng)址通過URL重寫的手段去掉其動態(tài)參數(shù),使URL靜態(tài)化,但在實際的網(wǎng)頁目錄中并沒有重寫URL。

簡單來說,偽靜態(tài)URL就是通過服務(wù)器轉(zhuǎn)換偽裝文件名或地址,使該頁面類似于靜態(tài)頁面,但服務(wù)器上沒有獨立存在的文件,其本質(zhì)還是動態(tài)頁面。

PATH_INFO是服務(wù)器狀態(tài)中的一個參數(shù),PHP通過$_SERVER[‘PATH_INFO’]可以查看內(nèi)容

二:如何解析

Apache

在Apache中, 當(dāng)不加配置的時候, 對于PHP腳本, Accept pathinfo是默認接受的

apache下配置如下

 RewriteEngine on
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteRule ^(.*).html$ index.php/$1 [QSA,PT,L]

Nginx

通過 fastcgi_split_path_info 指令支持pathinfo模式,

簡單的配置如下:

  server {     listen 80;
     server_name chris.demo.com;
     root /home/wwwroot/chris/;
     location / {
        if (!-e $request_filename) {             rewrite  ^(.*)$  /index.php?s=/$1  last;
             break;
         }
     } location ~ \.php(.*)$ {
      
      fastcgi_index  index.php;      ##默認是使用unix socket 通訊,后面修改了php-fpm 的配置,改為 tcp 通訊  ##fastcgi_pass unix:/run/php/php7.3-fpm.sock;  ##unix socket  fastcgi_pass 127.0.0.1:9000;  ##TCP  
      ##增加 fastcgi_split_path_info指令,將URI匹配成PHP腳本的URI和pathinfo兩個變量  ##即$fastcgi_script_name 和$fastcgi_path_info      fastcgi_split_path_info  ^(.+\.php)(.*)$; 
      
      ##PHP中要能讀取到pathinfo這個變量  ##就要通過fastcgi_param指令將fastcgi_split_path_info指令匹配到的pathinfo部分賦值給PATH_INFO  ##這樣PHP中$_SERVER['PATH_INFO']才會存在值  fastcgi_param  PATH_INFO        $fastcgi_path_info;   
      fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
      fastcgi_param  PATH_TRANSLATED  $document_root$fastcgi_path_info;      include        fastcgi_params;
 }
 }

配置完成后重啟nginx , php-fpm 服務(wù),已經(jīng)可以成功請求

PATH_INFO模式是什么

創(chuàng)建入口文件 index.php , 通過$_SERVER[‘PATH_INFO’]獲取信息

http://chris.demo.com/index.php/Home/index/chris

 <?php
 var_dump($_SERVER['PATH_INFO']);
 //string(17) "/Home/index/chris"

可以看到,我們獲取到了入口文件后的路徑信息。

“PATH_INFO模式是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI