Eingehende Analyse der PHP-Framework-Routing-Implementierung unter Nginx

angryTom
Freigeben: 2023-04-07 15:16:01
nach vorne
2668 Leute haben es durchsucht

Wenn alle Frameworks Geschäftsanfragen verarbeiten, verarbeiten sie den Pfadteil der URL und weisen ihn dem angegebenen Code zur Verarbeitung zu.
Der Schlüssel zur Realisierung dieser Funktion besteht darin, die Daten des URL-Teils in der globalen Variablen $_SERVER abzurufen

Wenn der angeforderte Pfad
http://test.com/article ist ?id= 1
http://test.com/article/update?id=1

Unterstützt den oben genannten URL-Modus, es ist nicht erforderlich, die übergebene PATH_INFO-Variable zu konfigurieren , und es besteht keine Notwendigkeit, den pseudostatischen Entfernungsindex.php zu konfigurieren
Die einfachste Nginx-Konfiguration ist wie folgt:

server {
        listen 80; 
        server_name  test.com;
        access_log  /var/log/nginx/test.com.access.log  main;
        root   /home/test;
        index  index.html index.htm index.php;
        location / { 
                try_files $uri $uri/ /index.php?q=$uri&$args;
        }   
        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;
        }   
}
Nach dem Login kopieren

Es gibt mehrere wichtige Punkte, die beachtet werden müssen in dieser Konfiguration:

1.try_files muss im Standortblock konfiguriert werden. Dies kann zum Entfernen von index.php verwendet werden. Wenn nicht konfiguriert, müssen Sie /index.php/ hinzufügen.
2.location ~ .php
a. Manchmal stört es Sie, ob es mit $ endet. Der entscheidende Punkt ist, zu überprüfen, ob die try_files-Direktive nicht existiert $. Auf diese Weise kann weiterhin darauf zugegriffen werden, indem der Modus mit /index.php/ im Pfad verwendet wird
b Wenn es eine try_files-Direktive gibt und der Speicherort ~ .php$ hier mit $ endet, dann /. index.php/ kann nicht mit dem Speicherort von php übereinstimmen, aber try_files schreibt die Parameter in index.php?q= won um, sodass auch auf diese Weise darauf zugegriffen werden kann.

Zu diesem Zeitpunkt lauten in der Variablen $_SERVER die Variablenwerte, die häufig von großen Frameworks oder selbst geschriebenen Programmen für die Routing-Verarbeitung verwendet werden, wie folgt:

$_SERVER[" PHP_SELF"]=>"/ index.php", es gibt keinen Parameter in der URL

$_SERVER["PATH_INFO"]=>, er existiert überhaupt nicht, da Nginx diesen nicht übergibt Variable

$_SERVER["REQUEST_URI"] =>"/article/update?id=1", dies ist der Schlüssel zur Implementierung des Routings, die Parameter sind alle vorhanden


Die kompatiblere Verarbeitung in PHP ist:

$uri=$_SERVER['REQUEST_URI'];
$uri=str_replace("/index.php","",$uri);
if(strpos($uri,"?")!==false){
   $uri=substr($uri,0,strpos($uri,'?'));
}
$uri=trim($uri,'/');
var_dump($uri);//获取到 article/update
Nach dem Login kopieren

Empfohlenes Tutorial: PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonEingehende Analyse der PHP-Framework-Routing-Implementierung unter Nginx. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:cnblogs.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!