Maison >cadre php >PensezPHP >Comment thinkphp charge-t-il les itinéraires ?

Comment thinkphp charge-t-il les itinéraires ?

步履不停
步履不停original
2019-07-01 10:48:063206parcourir

Comment thinkphp charge-t-il les itinéraires ?

Introduction au routage d'URL ThinkPHP

Pour faire simple, le routage d'URL vous permet de personnaliser l'URL dont vous avez besoin selon certaines règles pour réaliser l'embellissement l'URL, améliorent l'expérience utilisateur et profitent également de l'objectif d'inclusion dans les moteurs de recherche.

Exemple

L'URL d'origine est :

http://www.5idev.com/index.php/Products/Show/category/ 5/id/123

L'intention initiale de cette URL est d'afficher le produit avec l'identifiant 123 dans la 5ème catégorie. Après réécriture du routage de l'URL, l'URL peut être :

http://www.5idev.com/index.php/product/5/123

Si Réécriture du fichier .htaccess est utilisé Si la règle masque le fichier d'entrée, l'URL ci-dessus peut être encore simplifiée en :

http://www.5idev.com/product/5/123

Ceci L'adresse URL est relativement simple et facile à gérer.

Astuce : L'utilisation des règles de réécriture d'URL d'Apache peut également réaliser la fonction de personnalisation d'URL, qui ne sera pas abordée ici. Si vous êtes intéressé, veuillez vous référer aux articles liés à Apache Rewrite.

Configuration du routage URL ThinkPHP

Pour utiliser la fonction de routage URL dans ThinkPHP, vous devez effectuer la configuration suivante :

Activer la fonction de routage dans le fichier de configuration du projet Conf/ config.php (Défini sur true) :

'URL_ROUTER_ON' => true,

La définition de la règle de routage

est différente de la version 2.x, 3.0 Les règles de routage sont définies dans le fichier de configuration du projet config.php au format tableau. Les règles de définition spécifiques sont divisées en routage de règles et routage régulier. La syntaxe de routage des règles est la suivante :

Format 1 : 'Routing Rule'=>'[Group/Module/Operation]?Extra Parameter 1=Value 1&Extra Parameter 2=Value 2...'
Format 2 : 'Règles de routage' =>array('[Groupe/Module/Opération]','Paramètre supplémentaire 1=Valeur 1&Paramètre supplémentaire 2=Valeur 2...')
Format 3 : 'Règle de routage' = >'Adresse externe'
Format 4 : 'Règle de routage' =>array('Adresse externe','Code de redirection')

Description de la syntaxe

Les règles de routage sont les règles que nous souhaitons afficher dans l'URL. La valeur de l'élément suivant est l'adresse et les paramètres réels de l'URL. Si la règle de routage commence par :, cela signifie une variable dynamique, sinon c'est le cas. un format d'adresse statique 2 Des paramètres supplémentaires peuvent être transmis sous forme de tableaux ou de chaînes. Les règles de routage prennent en charge la définition de contraintes numériques des variables, par exemple : 'product/:idd'=>'Products/Show'. Les règles de routage prennent en charge l'exclusion des variables non numériques. , tels que 'news/:cate^ add|edit|delete'=>'News/category', la règle de routage prend en charge la définition de correspondance complète, par exemple : 'product/:idd$'=>'Products/Show'. La partie adresse de la règle de routage n'est pas sensible à la casse. Si vous souhaitez référencer des variables dynamiques dans l'adresse, utilisez :1, :2. La règle de routage peut prendre en charge les définitions dynamiques et statiques complètes, par exemple ':user/blog. /:id'=>'Home/Blog/user'

Ces règles et descriptions de syntaxe sont relativement obscures. Vous trouverez des exemples ci-dessous pour vous aider à comprendre les règles de routage et les descriptions de syntaxe ci-dessus.

Si la fonction d'activation de l'itinéraire est définie dans le fichier de configuration, lorsque le système effectuera l'analyse Dispatch, il déterminera si l'URL actuelle a un nom d'itinéraire défini. Si tel est le cas, il effectuera l'analyse de l'URL en fonction de l'URL définie. règles de routage.

Exemple de routage d'URL ThinkPHP

Prenez l'exemple au début de cet article comme exemple pour voir comment la route est définie. Définissez les règles suivantes dans le fichier de configuration du projet Conf/config.php :

//Route definition
'URL_ROUTE_RULES'=> ; 'Products/Show', //Routage des règles
),

Quand on visite l'adresse suivante :

http://www.5idev.com/index . php/product/5/123


résoudra l'adresse en opération Afficher du module Produits et transmettra le paramètre getcategory=5&id=123.

S'il existe des paramètres fixes supplémentaires, tels que status=1, vous pouvez définir l'itinéraire :

'product/:categoryd/:idd'=>'Products/Show?status= 1', //Routage des règles


correspond également à l'adresse URL suivante :

http://www.5idev.com/index.php/product/5/123/1


Ceux ci-dessus sont tous les itinéraires définis selon le format 1. S'il y a des paramètres supplémentaires, ils peuvent être convertis au deuxième format de définition :

'product/:categoryd/:idd ' =>array('Products/Show','status=1')



Dans les règles de routage ci-dessus, d signifie uniquement les nombres correspondants. Lorsque cette contrainte n'est pas ajoutée, elle est utilisée. peut correspondre à tous les caractères, c'est également la valeur par défaut. Si vous souhaitez être strictement d'accord sur le format des paramètres entrants, utilisez le routage régulier pour définir des règles.

Format de routage : adresse externe

Pour le format de routage 3 et le format 4, si un format de routage correspondant est détecté, il passera à l'adresse externe. La différence est que le format 4 a une redirection. Par exemple, 301 représente une redirection permanente.

Pour plus d'articles techniques liés à ThinkPHP, veuillez visiter la colonne Tutoriel d'utilisation de ThinkPHP pour apprendre !

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:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn