Heim >PHP-Framework >Denken Sie an PHP >Einführung in die vier URL-Modi von thinkphp

Einführung in die vier URL-Modi von thinkphp

尚
nach vorne
2020-05-05 09:10:535505Durchsuche

Einführung in die vier URL-Modi von thinkphp

Routing: Zugriff auf die URL-Adresse einer bestimmten Methode im Projekt. Ein einfaches Verständnis ist die URL-Adresse

In ThinkPHP stellt das System 4 Routing-Formulare bereit (vorherige Routing-Format: index.php?p=platform&c=controller&a=method; pca)

Zusammenfassung: pca ist Plattform, Controller, Methode; mca ist in thinkPHP Gruppe, Controller, Methode

①Normale Form Routing;

②Pathinfo-Formularrouting;

③Formularrouting neu schreiben;

④Kompatibles Formularrouting

Detaillierte Erklärung unten

(1) Gewöhnlich Formularrouting

wird auch Get-Formularrouting genannt. Alle Informationen werden über get

Routing-Formular weitergeleitet: http://website/entry file (index.php)?m=group &c=controller name&a=Methode&Parametername=Parameterwert

Zum Beispiel: Greifen Sie auf die Testmethode im Benutzercontroller unter der Home-Gruppe zu und übergeben Sie eine Parameter-ID=1

http: //www.1336.com /index.php?m=Home&c=User&a=test&id=1

kann über $_GET['id'], Ausgabe 1, überprüft werden. Die Verifizierung ist also erfolgreich

Nachteile: Alles, was über die URL übergeben wird, wird angezeigt, was weder sicher noch gut aussieht. Daher wird es nicht oft verwendet.

(2) pathinfo()-Formular-Routing (thinkPHPs Standard-Routing)

Routing-Formular: http://website/entry file (index.php)/group name /Controllername/Methode/Parametername 1/Parameterwert 1/Parametername n/Parameterwert n

http://www.1336.com/index.php/Home/User/test/id/ 100

Die Methode enthält $_GET['id'] und 100 wird ausgegeben. Die Überprüfung ist also erfolgreich

(3) Routing-Formular neu schreiben (rewrite)

Routing-Formular: http://URL/Gruppenname/Controllername/Methodenname/Parameter 1/Parameterwert 1 /Parameter n/Parameterwert n

Der Unterschied zum Standard-Routing-Formular Pathinfo() von thinkPHP besteht darin, dass die Eintragsdatei fehlt

Hinweis: Dieses Routing-Formular kann nicht direkt verwendet werden erst nach Abschluss der Konfiguration verwendet werden

Konfigurationsschritte:

1. Konfigurieren Sie httpd.conf unter Apache und aktivieren Sie das erweiterte Rewrite-Rewrite-Modul.

2 Host-Konfigurationsdatei. Die Datei befindet sich im Apache-Verzeichnis conf/extra/httpd-vhosts und ermöglicht das Umschreiben der Konfiguration. Zeigt an, dass die aktuelle Site neu geschrieben werden darf

Einfach ausgedrückt: Fügen Sie für die Site, die neu geschrieben werden muss, Allowoverride:all

#针对目录的详细配置
    <Directory>
        #允许所有访问
        allow from all
        #允许重写
        AllowOverride all
        #表示允许站点显示文件目录结构
        Options +indexes
    </Directory>

3 Apache neu starten

4. Kopieren Sie die .htaccess-Datei im komprimierten ThinkPHP-Paket in das gleiche Verzeichnis wie die Eintragsdatei.

Geben Sie nach Abschluss der Konfiguration die URL der Pfadinformationen oben ein wird auch hier verwendet. Entfernen Sie die Eintragsdatei und aktualisieren Sie sie. OK~Konfiguration abgeschlossen

Erweiterung:

PHP-Betriebsmodus (5 Hauptbetriebsmodi):

CGI-Modus (universelle Gateway-Schnittstelle);

FastCGI-Modus (residentes CGI);

CLI (Befehlszeilenbetrieb);

Webmodulmodus (der Modus, in dem Webserver wie Apache ausgeführt werden) (5.3). Nach Version 1) nicht mehr unterstützt

Der derzeit verwendete Modus des Umgebungsintegrationspakets ist der Webmodulmodus, und der FastCGI-Residentmodus wird häufig in der Arbeitsentwicklung verwendet.

Zusammenfassend lässt sich sagen, dass der Rewrite-Modus Apache-Unterstützung erfordert und im Allgemeinen nicht empfohlen wird. Zur Serversoftware gehören neben Apache auch Nginx, Lightd usw.

(4) Kompatibles Routing-Formular

Das kompatible Routing-Formular kombiniert die Funktionen des gewöhnlichen Routing-Formulars, des Pathinfo-Routing-Formulars und des umgeschriebenen Routing-Formulars

Routing-Formular: http:/ /website/ Eintragsdatei?s=/Gruppenname/Controllername/Methodenname/Parameter 1/Parameterwert 1

Hinweis: Das kompatible Routing-Formular hat nur einen Parameter: Parametername s, der als angezeigt werden kann s Parameterwert

Zum Beispiel: http://www.1336.com/index.php?s=/Home/User/test/id/100, die Verifizierungsausgabe ist 100, was darauf hinweist, dass der Zugriff erfolgt erfolgreich

(5) Erweiterung: Konfiguration des Routing-Formulars in ThinkPHP

Konfigurationsdatei ThinkPHP/Conf/convention.php, ThinkPHP konventionelle Konfigurationsdatei

/* URL设置 */
&#39;URL_CASE_INSENSITIVE&#39;  =>  true,   // 默认false 表示URL区分大小写 true则表示不区分大小写
&#39;URL_MODEL&#39;             =>  1,

URL-Zugriffsmodus, optional Parameter 0, 1, 2, 3, Stellt die folgenden vier Modi dar:

0 (normaler Modus);

1 (Pfadinfo-Modus); ;

3 (Kompatibilitätsmodus) Der Standardwert ist Pathinfo-Modus

Hinweis: Der Konfigurationswert des Routing-Formulars hat keinen Einfluss auf andere Formen des Routing-Zugriffs, die in der Adressleiste eingegeben werden. Der Wert dieses Konfigurationselements beeinflusst die Form der URL-Adresse, die von der vom ThinkPHP-System gekapselten URL-Assembly-Funktion (U-Funktion) generiert wird.

ThinkPHP unterstützt vier URL-Modi, die durch Festlegen des Parameters URL_MODEL definiert werden können. einschließlich Normalmodus, PATHINFO, REWRITE und Kompatibilitätsmodus.

1. Normaler Modus: 'URL_MODEL'=>0,

http://serverName/appName/?m=module&a=action&id=1

2. PATHINFO-Modus: 'URL_MODEL'=>1, (Systemstandardmodus)

Der URL_PATHINFO-Modus wird standardmäßig verwendet. Der PATHINFO-Modus umfasst auch den Normalmodus und den Smart-Modus:

PATHINFO-Normalmodus: 'PATH_MODEL'=>1,

Die URL-Parameter dieses Modus haben keine Reihenfolge, z Beispiel

http://serverName/appName/m/module/a/action/id/1
http://serverName/appName/a/action/id/1/m/module

PATHINFO smart mode:'PATH_MODEL'=>2, (Systemstandardmodus)

Dieser Modus identifiziert automatisch Module und Vorgänge, wie z. B.

http://serverName/appName/module/action/id/1/
http://serverName/appName/module,action,id,1/

in smart mode: Der erste Parameter wird in den Modulnamen (oder Routennamen, wie unten beschrieben) analysiert, der zweite Parameter wird in den Vorgang analysiert (unter der Voraussetzung, dass der erste Parameter nicht der Routenname ist) und die folgenden Parameter werden analysiert explizit Es wird per Formel übergeben und muss paarweise erscheinen, zum Beispiel:

http://serverName/appName/module/action/year/2000/month/01/day/01/

其中参数之间的分割符由PATH_DEPR参数设置,默认为"/",若设置PATH_DEPR为"^",则:

http://serverName/appName/module^action^id^1/

注意不要使用"@" 和"&"符号进行分割,该符号有特殊用途,可能会导致其他的冲突。

如果想要简化URL的形式可以通过路由功能(后面会有描述),在PATHINFO模式下,会把相关参数转换成GET变量,以及并入REQUEST变量,因此不妨碍应用里面的以上变量获取。

3、REWRITE模式:'URL_MODEL'=>2,

该URL模式和PATHINFO模式功能一样,除了可以不需要在URL里面写入口文件,和可以定义.htaccess 文件外。

例如,我们可以增加如下的.htaccess内容把所有操作都指向index.php文件。

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]

4、兼容模式:'URL_MODEL'=>3

兼容模式是普通模式和PATHINFO模式的结合,并且可以让应用在需要的时候直接切换到PATHINFO模式而不需要更改模板和程序,基本上可以支持任何的运行环境。

只需要传入PATHINFO 兼容模式获取变量VAR_PATHINFO,默认值为s,例如

http://serverName/appName/?s=/module/action/id/1/

会执行和上面的URL等效的操作,并且也可以支持参数分割符号的定义,例如在PATH_DEPR设置为"~"的情况下,下面的URL有效:

http://serverName/appName/?s=module~action~id~1

兼容模式的情况下面模板文件不用做任何更改,保持和PATHINFO模式的写法一样,只需要在切换URL模式的时候清空下模板缓存目录。

推荐教程:《TP5

Das obige ist der detaillierte Inhalt vonEinführung in die vier URL-Modi von thinkphp. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:cnblogs.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen