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; } }
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
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!