Réécriture d'URL

Réécriture d'URL
L'URL qu'un client demande peut être modifiée entièrement ou à l'aide des règles de réécriture Nginx. En plus de diriger le flux des pages d'exécution de Nginx, l'objectif principal de mettre à jour une URL est d'alerter les clients que les services qu'ils recherchent ont déplacé. Les URL sont réécrites à l'aide des commandes de retour et de réécriture dans nginx. La même tâche de réécriture des URL est effectuée par les deux directives. La directive de réécriture est plus forte que la directive de retour, car elle peut gérer une réécriture compliquée sans avoir besoin d'analyser les URL. Nous examinerons dans ce guide sur la façon dont le Nginx utilise les commandes de retour et de réécriture pour modifier ou réécrire l'URL.

Il est fortement conseillé de mettre à jour l'instance Nginx actuelle vers la version supérieure car cette instruction est optimisée pour Nginx version 1.0.1 et plus. Néanmoins, certaines opérations et syntaxes pourraient toujours s'appliquer aux versions plus tôt que celle mentionnée.

Directive de retour dans Ubuntu 20.04

La commande de retour fondamentale et bien compris est utilisée pour accomplir la réécriture de l'URL. Bien qu'il n'utilise pas les expressions régulières, il peut analyser les variables qui sont tirées du chemin du bloc d'emplacement. En règle générale, la directive de retour est utilisée pour relancer l'URL de demande à un endroit différent. En conséquence, il utilise fréquemment les codes d'état HTTP comme 301 pour la redirection continue et 302 pour la redirection temporaire. Les exemples des cas d'utilisation de la directive de retour sont affichés dans les fragments de code suivants:

Implémentation de la directive de retour dans le paramètre du serveur

Lorsque vous déplacez votre site Web vers un nouveau domaine et réduisez toutes les anciennes URL vers le nouveau domaine, la directive de retour dans l'environnement du serveur est très pratique. Faire de votre site vers la redirection vers la version «www» ou la version «non-www» aide également à canonicaliser l'URL.

La directive de retour dans le contexte du serveur précédent modifie l'URL destinée à la www.urlinux.site com qui est l'ancien domaine du www.urlinux.site com qui est le nouveau domaine. Lorsque Nginx voit une URL qui contient www.urlinux.com Site, il arrête immédiatement le traitement de la page et fournit au client un code de 301 réponses et reconstruise l'URL. Le $ schéma et $ demande URI sont les deux variables qui sont utilisées dans la directive de retour. Le $ demande URI variable comprend l'URI complet avec tous les paramètres. Et le $ schéma La variable est utilisée pour définir le schéma URL (HTTP ou HTTPS). Lors de la réécriture de l'URL, gardez à l'esprit que les deux variables récupèrent ces informations à partir de l'URL d'entrée.

Implémentation de la directive de retour dans le paramètre de localisation

Dans certaines circonstances, le transfert des pages est préférable dans le traitement des domaines. Vous pouvez redirigner les pages à un autre emplacement en utilisant la directive de retour trouvée à l'intérieur du bloc d'emplacement.

Lorsqu'une URL de demande correspond exactement au modèle / articles / échantillons-nginx dans l'exemple, Nginx redirige la demande vers le nouveau https: // linux.com / nginx / context-nginx / adresse. Vous pouvez également modifier la position de tout pour un certain chemin. L'exemple suivant montre comment rediriger toutes les pages marquées comme «/ échantillons» pour https: // linux.com / langues.

Réécrivez la directive dans Ubuntu 20.04

La capacité interne du serveur Web à réécrire les URL sans divulguer la méthode de base à la machine client est accomplie via la directive de réécriture. Il utilise les expressions régulières et se conforme à sa syntaxe. L'espace réservé de remplacement remplace l'URL correspondante. L'espace réservé regex permet aux expressions régulières d'être utilisées. Et l'indicateur permet de modifier le flux d'exécution. Les drapeaux se brisent, permanents, redirecteurs et derniers sont actuellement utilisés dans les directives de réécriture.

Les détails de syntaxe sont donnés dans les éléments suivants:

  • Regex: l'expression régulière construite à l'aide du pcre qui est appliqué à l'URL des demandes entrantes.
  • Remplacement-URL: Si l'URL demandée correspond à l'expression régulière, l'URL demandée est modifiée à l'aide de la chaîne de remplacement.
  • Flag: si la commande de réécriture doit être traitée davantage dépend de la valeur de l'indicateur.

Notez que seuls les codes 301 ou 302 peuvent être retournés par la directive de réécriture. Après la directive de réécriture, une directive de retour doit être incluse explicitement si vous souhaitez retourner des codes supplémentaires.

Implémentation de la directive de réécriture pour la page statique

Prenez le cas où vous souhaitez modifier l'URL d'une page, comme https: // linux.COM / nginx-échantillons à https: // linux.com / autre page.html. Dans le bloc d'emplacement suivant, une directive de réécriture est fournie pour accomplir la même tâche.

Selon l'emplacement de la commande de localisation = / nginx, seules les URL avec les échantillons préfix / nginx exact correspondent au bloc d'emplacement. L'URL de demande est examinée par Nginx pour les échantillons «/ nginx?Modèle $ ”. Les significations spécifiques des personnages «^», »?», Et« $ »sont utilisés pour définir le modèle. La chaîne qui doit être appariée commence avec «^». La fin de la chaîne à correspondre est indiquée par le symbole «$». Le signe du modificateur non vif est «?".

Une fois le match trouvé, un modificateur non vif cesse de chercher des motifs. Si l'URI demandé correspond au modèle, «l'autre page.html ”est substitué. La réécriture se termine également parce que la contrainte de réécriture se termine par une pause. Mais la demande modifiée n'est pas transmise à un endroit différent.

Implémentation de la directive de réécriture pour la page dynamique

Maintenant, considérez une page dynamique où la partie dynamique est id = 11: https: // www.linux.com / linux-utilisateur.php?id = 11 (uid). Si vous utilisez le moyen le plus récent de réécrire les URL, vous avez besoin de 10 directives de réécriture pour chacun de vos 10 utilisateurs. Au lieu de cela, il est possible d'extraire les composants d'URL en variables et d'utiliser ces variables pour créer une seule commande de réécriture qui gère toutes les pages dynamiques.

Avec la commande d'emplacement «emplacement = / linux-user», Nginx est invité à rechercher la directive de localisation avec une URL qui contient exactement le préfixe «/ linux-user». Nginx scanne l'URL demandée pour le «Linux-User / ([0-9] +) /?Modèle $ ”. La gamme de caractères dans l'expression régulière carrée «^ [0-9] +» est entre 0 et 9. Un caractère ou des caractères correspondant sont indiqués par le symbole «+». En l'absence du signe «+», l'expression régulière identifie uniquement les personnages uniques comme 5 ou 8, mais pas 25 ou 44. Les parenthèses de l'expression régulière () marquent la référence en arrière. Cette référence arrière est montrée par le «1 $» dans «Linux-User.php?id = 1 ”URL de substitution.

Conclusion

Les directives de réécriture ou de retour peuvent désormais être utilisées pour réécrire les URL. Les exemples de réécriture donnés dans ce cours sont simples à comprendre. Comme indiqué dans les exemples, la directive de retour est utilisée pour informer le navigateur et les robots de recherche de l'emplacement de la page. Tandis que la directive de réécriture peut être utilisée pour résumer l'opération de réécriture de l'URL sans informer le navigateur de ce qui se passe dans les coulisses.