簡體   English   中英

在這個例子中如何重寫規則NginX?

[英]How to rewrite rules NginX in this example?

我正在創建一個API來提供一些應用程序。

因此,應用程序可以調用這些可能的URL來從數據庫中獲取信息;

mysite.com/api/v1/get/menus/list_tblname1.json.php
mysite.com/api/v1/get/menus/list_tblname1.json.php?type=arr
mysite.com/api/v1/get/menus/list_tblname2.json.php
mysite.com/api/v1/get/menus/list_tblname2.json.php?type=arr

在PHP中,我已經有了從URL中tblname的代碼,並將所有表內容返回給我。 它運作良好(它不是最終版本)。 但現在我發現自己為URL指向的每個頁面復制並粘貼相同的代碼。 這是代碼:

<?php
header('Content-Type:application/json');
include_once '../../../../class/db.php';
$verb=$_SERVER['REQUEST_METHOD'];

$filePath=$_SERVER['SCRIPT_NAME'];
$split1 = explode("/", $filePath);

preg_match("/(?<=_)[^.]+/", $split1[5], $matches);
$tableName = $matches[0];

if ($verb=="GET") {

        header("HTTP/1.1 200 ok");

        if(isset($_GET['type']) && $_GET['type']=="arr"){
            echo db::get_list($tableName,'arr');//Reply ARRAY  
        }
        else{
            echo db::get_list($tableName);//Reply JSON  
        }
}
else{
        die("Nothing for you at this page!");        
    }

我的意思是,我在每個頁面中都有相同的代碼。

list_tblname1.json.php
list_tblname2.json.php

我不知道如何解決這種情況,但我認為這是重寫規則的情況。

所以,我認為一個可能的解決方案是創建一個可以調用returncontent.php頁面,並在服務器中創建應該在請求certanlly頁面時指向同一頁面的規則,並將參數$tableName傳遞給頁面。 我想我應該將正則表達式傳遞給我的服務器並使用$ _GET [](我認為)在returncontent.php獲取$tableName

我不確定。

我正在使用NginX。

如何在這種情況下實現它?

通常,在NginX中解析URI並將結果傳遞給下游是不好的做法。

相反: mysite.com/api/v1/get/menus/returncontent.php?file=list_tblname2.json

無需更改NginX。 在PHP中解析查詢參數( file )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM