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

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

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

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

$_SERVER['REQUEST_URI'] 是 PHP 中用于獲取當前請求的“路徑”和“查詢字符串”的超全局變量。

提供的 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

詳細拆解

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

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

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

對比其他相關變量

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

代碼示例:

// 第一步:獲取完整請求 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
// 第三步:去除入口文件名 (假設入口文件是 index.php)
$entryPoint = '/app/index.php'; // 通常來自 $_SERVER['SCRIPT_NAME']
$finalPath = str_replace($entryPoint, '', $pathOnly); 
// 結(jié)果: /admin/user/delete
// 第四步:清理斜杠
$cleanPath = trim($finalPath, '/');
// 結(jié)果: admin/user/delete

偽靜態(tài)

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

當使用 Nginx 進行 URL 重寫時:

當你在 Nginx 中配置了 URL 重寫(也稱為偽靜態(tài)設置),用戶的原始請求 URL 會被服務器重寫為另一種形式,然后再發(fā)送到后端的 PHP 腳本。這種情況下,有兩種主要方式來處理重寫后的請求:

1. ‌使用 `$request_uri‌ 在 Nginx 中重寫:

在 Nginx 配置中,你可以使用 rewrite 指令來重寫請求。例如:

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

在這個例子中,所有訪問 /product/123 的請求都會被重寫為 /index.php?page=product&id=123。在這種情況下,$_SERVER['REQUEST_URI'] 在 PHP 中將反映為 /index.php?page=product&id=123,而不是原始的 /product/123

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

為了在 PHP 中獲取原始 URI(即在瀏覽器地址欄中用戶看到的 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 中獲取重寫后的請求 URI,那么 $_SERVER['REQUEST_URI'] 將反映重寫后的結(jié)果。
  • 如果你需要在 PHP 中獲取并保留原始 URI,你需要在 Nginx 配置中顯式地將原始 URI 作為查詢參數(shù)傳遞到 PHP 腳本中,然后在 PHP 中通過 $_GET 或 $_REQUEST 訪問這個參數(shù)。例如,使用 original_uri=$request_uri

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

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

相關文章

最新評論

商城县| 定边县| 麦盖提县| 淅川县| 界首市| 亚东县| 昌江| 达日县| 七台河市| 淅川县| 澄城县| 郎溪县| 沁水县| 同仁县| 茂名市| 和田县| 佛山市| 黄骅市| 荆门市| 桂林市| 昆明市| 万州区| 邛崃市| 皮山县| 旬邑县| 开远市| 怀柔区| 渭源县| 漾濞| 辛集市| 阳江市| 名山县| 阳原县| 九龙城区| 加查县| 通化市| 威远县| 瑞金市| 友谊县| 张家川| 江孜县|