Maison  >  Article  >  cadre php  >  Introduction aux quatre modes d'URL de thinkphp

Introduction aux quatre modes d'URL de thinkphp

尚
avant
2020-05-05 09:10:535385parcourir

Introduction aux quatre modes d'URL de thinkphp

Routage : accédez à l'adresse URL d'une méthode spécifique dans le projet. Une compréhension simple est l'adresse URL

Dans ThinkPHP, le système fournit 4 formulaires de routage (précédents). Format de routage : index.php?p=platform&c=controller&a=method; pca)

Résumé : pca est une plate-forme, un contrôleur, une méthode ; mca dans thinkPHP est un groupe, un contrôleur, une méthode

①Forme normale routage;

②Routage du formulaire Pathinfo;

③Routage du formulaire de réécriture;

④Routage du formulaire compatible

Explication détaillée ci-dessous

(1) Ordinaire Le routage du formulaire

est également appelé routage du formulaire get. Toutes les informations sont transmises via le formulaire de routage get

 : http://website/entry file (index.php)?m=group &c=controller. name&a=method¶meter name=parameter value

Par exemple : accédez à la méthode de test dans le contrôleur utilisateur sous le groupe Home et passez un paramètre id=1

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

peut être vérifié via $_GET['id'], sortie 1. La vérification est donc réussie

Inconvénients : Tout ce qui passe par l'url sera affiché, ce qui n'est ni sûr ni beau. Il n'est donc pas beaucoup utilisé

(2) routage du formulaire pathinfo() (routage par défaut de thinkPHP)

Formulaire de routage : http://website/entry file (index.php)/group name /Nom du contrôleur/Méthode/Nom du paramètre 1/Valeur du paramètre 1/Nom du paramètre n/Valeur du paramètre n

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

Il y a $_GET['id'] dans la méthode et 100 est affiché. La vérification est donc réussie

(3) réécrire le formulaire de routage (réécriture)

Formulaire de routage : http://url/nom du groupe/nom du contrôleur/nom de la méthode/paramètre 1/valeur du paramètre 1 /Paramètre n/Valeur du paramètre n

La différence avec le formulaire de routage par défaut de thinkPHP, Pathinfo(), est que le fichier d'entrée est manquant

Remarque : ce formulaire de routage ne peut pas être utilisé directement. ne doit être utilisé qu'une fois la configuration terminée

Étapes de configuration :

1. Configurez httpd.conf sous Apache et activez le module de réécriture étendu

2. fichier de configuration de l'hôte, Le fichier se trouve dans le répertoire Apache, conf/extra/httpd-vhosts, et permet la réécriture de la configuration. Indique que le site actuel peut être réécrit

En termes simples, pour le site qui doit être réécrit, ajoutez Allowoverride:all

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

3. 🎜>

4. Copiez le fichier .htaccess dans le package compressé ThinkPHP dans le répertoire du même niveau que le fichier d'entrée

Une fois la configuration terminée, entrez l'URL pour vérification L'URL du chemin d'accès ci-dessus. est également utilisé ici. Supprimez le fichier d’entrée et actualisez-le Found Output 100. OK~Configuration terminée

Extension :

Mode de fonctionnement PHP (5 modes de fonctionnement majeurs) :

Mode CGI (interface de passerelle universelle) ;

Mode FastCGI (CGI résident) ;

CLI (opération en ligne de commande) ;

mode module Web (le mode dans lequel les serveurs Web tels qu'Apache s'exécutent

mode ISAPI (5.3) ; N'est plus pris en charge après la version 1)

Le mode du package d'intégration d'environnement actuellement utilisé est le mode module Web, et le mode résident FastCGI est couramment utilisé dans le développement de travaux.

Pour résumer, le mode réécriture nécessite le support d'Apache et n'est généralement pas recommandé. En plus d'Apache, le logiciel serveur inclut également nginx, lightd, etc.

(4) Formulaire de routage compatible

Le formulaire de routage compatible combine les fonctionnalités du formulaire de routage ordinaire, du formulaire de routage pathinfo et du formulaire de routage de réécriture

Formulaire de routage : http:/ /website/ Entry file?s=/group name/controller name/method name/parameter 1/parameter value 1

Remarque : le formulaire de routage compatible n'a qu'un seul paramètre : le nom du paramètre s, qui peut être considéré comme s valeur du paramètre

Par exemple : http://www.1336.com/index.php?s=/Home/User/test/id/100, la sortie de vérification est 100, indiquant que l'accès est réussi

(5) Extension : Configuration du formulaire de routage dans ThinkPHP

fichier de configuration ThinkPHP/Conf/convention.php, fichier de configuration conventionnel ThinkPHP

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

Mode d'accès URL, facultatif paramètres 0, 1, 2, 3, Représente les quatre modes suivants :

0 (mode normal) ;

1 (mode Pathinfo)

2 (mode RÉÉCRITURE) ; ;

3 (Mode de compatibilité) La valeur par défaut est le mode Pathinfo

Remarque : La valeur de configuration du formulaire de routage n'affecte pas les autres formes d'accès au routage saisies dans la barre d'adresse. La valeur de cet élément de configuration affecte la forme de l'adresse URL générée par la fonction d'assemblage d'URL (fonction U) encapsulée par le système ThinkPHP

ThinkPHP prend en charge quatre modes d'URL, qui peuvent être définis en définissant le paramètre URL_MODEL, y compris le mode normal, PATHINFO, REWRITE et le mode de compatibilité.

1. Mode normal : 'URL_MODEL'=>0,

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

2. Mode PATHINFO : 'URL_MODEL'=>1, (mode par défaut du système)

Le mode URL_PATHINFO est utilisé par défaut. Le mode PATHINFO comprend également le mode normal et le mode intelligent :

Mode normal PATHINFO : 'PATH_MODEL'=>1,

Les paramètres d'URL de ce mode n'ont pas d'ordre, car exemple

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

Mode intelligent PATHINFO :'PATH_MODEL'=>2, (mode par défaut du système)

Ce mode identifie automatiquement les modules et les opérations, tels que

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

dans smart mode , le premier paramètre sera analysé dans le nom du module (ou le nom de la route, décrit ci-dessous), le deuxième paramètre sera analysé dans l'opération (en partant du principe que le premier paramètre n'est pas le nom de la route), et les paramètres suivants sont explicite Il est passé par formule et doit apparaître par paire, par exemple :

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer