最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PHP從完整的URL中提取出核心路徑的方式

 更新時(shí)間:2026年04月01日 09:02:11   作者:chxii  
文章介紹了`$_SERVER['REQUEST_URI']`在PHP中獲取當(dāng)前請(qǐng)求路徑和查詢(xún)字符串的功能,并對(duì)比了其他相關(guān)變量,詳細(xì)解釋了偽靜態(tài)設(shè)置下如何在Nginx中重寫(xiě)URL,并提供了兩種處理方式確保獲取正確的請(qǐng)求URI,需要的朋友可以參考下

獲取 這個(gè) http://site.com/app/index.php/admin/user/delete?id=1 的核心路徑

$_SERVER['REQUEST_URI'] 是 PHP 中用于獲取當(dāng)前請(qǐng)求的“路徑”和“查詢(xún)字符串”的超全局變量。

提供的 URL:http://site.com/app/index.php/admin/user/delete?id=1

$_SERVER['REQUEST_URI'] 獲取到的內(nèi)容是:

/app/index.php/admin/user/delete?id=1

詳細(xì)拆解

$_SERVER['REQUEST_URI'] 包含了 URL 中 域名之后、錨點(diǎn)(#)之前 的所有內(nèi)容。它由兩部分組成:

  1. Path(路徑)/app/index.php/admin/user/delete
  2. Query String(查詢(xún)字符串)id=1 (即 ? 及其后面的部分)

這兩部分直接拼接在一起,中間沒(méi)有額外的字符。

對(duì)比其他相關(guān)變量

變量名獲取的內(nèi)容說(shuō)明
$_SERVER['REQUEST_URI']/app/index.php/admin/user/delete?id=1路徑 + 查詢(xún)字符串 (最常用)
$_SERVER['SCRIPT_NAME']/app/index.php入口文件的路徑 (通常用于路由分發(fā)時(shí)剔除)
$_SERVER['QUERY_STRING']id=1僅 查詢(xún)字符串 部分
$_SERVER['PHP_SELF']/app/index.php/admin/user/delete當(dāng)前執(zhí)行腳本的路徑 (不包含查詢(xún)字符串,但在某些服務(wù)器配置下可能不穩(wěn)定)

代碼示例:

// 第一步:獲取完整請(qǐng)求 URI
$rawUri = $_SERVER['REQUEST_URI']; 
// 結(jié)果: /app/index.php/admin/user/delete?id=1
// 第二步:只取路徑部分(去除 ?id=1)
pathOnly = parse_url($rawUri, PHP_URL_PATH); 
// 結(jié)果: /app/index.php/admin/user/delete
// 第三步:去除入口文件名 (假設(shè)入口文件是 index.php)
$entryPoint = '/app/index.php'; // 通常來(lái)自 $_SERVER['SCRIPT_NAME']
$finalPath = str_replace($entryPoint, '', $pathOnly); 
// 結(jié)果: /admin/user/delete
// 第四步:清理斜杠
$cleanPath = trim($finalPath, '/');
// 結(jié)果: admin/user/delete

偽靜態(tài)

偽靜態(tài)的核心作用是讓 Web 服務(wù)器(如 Nginx 或 Apache)在請(qǐng)求到達(dá) PHP 之前,把“好看的 URL”內(nèi)部重寫(xiě)成“帶參數(shù)的入口文件 URL”。

當(dāng)使用 Nginx 進(jìn)行 URL 重寫(xiě)時(shí):

當(dāng)你在 Nginx 中配置了 URL 重寫(xiě)(也稱(chēng)為偽靜態(tài)設(shè)置),用戶(hù)的原始請(qǐng)求 URL 會(huì)被服務(wù)器重寫(xiě)為另一種形式,然后再發(fā)送到后端的 PHP 腳本。這種情況下,有兩種主要方式來(lái)處理重寫(xiě)后的請(qǐng)求:

1. ‌使用 `$request_uri‌ 在 Nginx 中重寫(xiě):

在 Nginx 配置中,你可以使用 rewrite 指令來(lái)重寫(xiě)請(qǐng)求。例如:

location / {
    rewrite ^/product/([0-9]+)$ /index.php?page=product&id=$1 last;
}

在這個(gè)例子中,所有訪(fǎng)問(wèn) /product/123 的請(qǐng)求都會(huì)被重寫(xiě)為 /index.php?page=product&id=123。在這種情況下,$_SERVER['REQUEST_URI'] 在 PHP 中將反映為 /index.php?page=product&id=123,而不是原始的 /product/123。

2. ‌保持原始 URI 使用 `$uri‌:

為了在 PHP 中獲取原始 URI(即在瀏覽器地址欄中用戶(hù)看到的 URL),你可以在 Nginx 中使用 $uri 或 $request_uri 并將其傳遞到 PHP。例如:

location / {
    try_files $uri $uri/ /index.php?$args;
}

或者更明確地:

location / {
    rewrite ^/product/([0-9]+)$ /index.php?page=product&id=$1 last;
    try_files $uri $uri/ /index.php?original_uri=$request_uri&$args;
}

結(jié)論:

  • 如果你希望在 PHP 中獲取重寫(xiě)后的請(qǐng)求 URI,那么 $_SERVER['REQUEST_URI'] 將反映重寫(xiě)后的結(jié)果。
  • 如果你需要在 PHP 中獲取并保留原始 URI,你需要在 Nginx 配置中顯式地將原始 URI 作為查詢(xún)參數(shù)傳遞到 PHP 腳本中,然后在 PHP 中通過(guò) $_GET 或 $_REQUEST 訪(fǎng)問(wèn)這個(gè)參數(shù)。例如,使用 original_uri=$request_uri

通過(guò)這種方式,你可以靈活地控制 PHP 腳本中可用的 URI 信息,無(wú)論是原始的還是經(jīng)過(guò)重寫(xiě)的。

以上就是PHP從完整的URL中提取出核心路徑的方式的詳細(xì)內(nèi)容,更多關(guān)于PHP從URL中提取核心路徑的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論

革吉县| 抚州市| 永顺县| 来安县| 松潘县| 凉城县| 景东| 榆中县| 城市| 城固县| 兴安县| 如皋市| 栾川县| 竹北市| 香格里拉县| 吴忠市| 郸城县| 区。| 普格县| 咸宁市| 临江市| 宁蒗| 集安市| 丰城市| 周宁县| 河南省| 德江县| 黎川县| 三亚市| 嘉鱼县| 辽阳市| 武乡县| 翁牛特旗| 太康县| 田林县| 平利县| 永善县| 瓮安县| 江口县| 炉霍县| 台前县|