Récemment, j'ai été occupé avec mon propre programme de blog et je me suis naturellement tourné vers le problème de réécriture d'URL dont on parle souvent dans les blogs. L'une des raisons est un problème de visage dans un système de blog multi-utilisateurs. Au départ, je voulais utiliser mon blog CSDN http://blog.csdn.net/joshualang comme exemple, mais j'y ai réfléchi et j'ai utilisé mon espace ( http:/ /www.tyoo.net ), car c'est là que j'irai après avoir terminé mon blog.
Si la réécriture d'URL nécessaire n'est pas effectuée comme http://www.tyoo.net/blog/joshualang , une adresse de blog comme http://www.tyoo.net/blog/default.aspx?Bloger=joshualang apparaîtra ; Il faut savoir qu'un blog est considéré comme une autre maison construite sur Internet par la plupart des internautes. Dans la vraie vie, ils prendront en compte la distance de l'adresse du domicile et la qualité du transport. De même, la maison sur Internet doit également avoir un numéro de maison. c'est facile à retenir. Ce numéro de maison n'est pas trop long (pas très correct), et ajouter un tas de paramètres après peut intimider les gens. Si vous voulez lire l'article, vous devez faire face à tant de choseshttp:// blog.tyoo.net. /Articles/Default.aspx?Bloger=joshualang&ArticleID=20070118234530Ressentez-vous quelque chose ? Jetons un coup d'œil à un effet que de nombreux programmes de blog ont désormais : http://blog.tyoo.net/joshua/Articles/2007/01/18/ Tout le monde connaîtra les avantages de cet effet en un coup d'œil, et voici ceci nous amène au point clé de cet article !
Oui, nous devons atteindre l’un de nos objectifs grâce à un enchaînement aussi très régulier.
Une URL viable doit être sélectionnée selon les critères suivants :
• Courte.
• Facile à taper.
• La structure du site est visible.
• « Truncable », qui permet aux utilisateurs de parcourir le site en supprimant les composants de l'URL.
Je n’ai pas besoin d’en dire plus sur ce point, en fait, tout est question de simplicité et de praticité.
Remarque : en parlant de cela, il fautdéjà
lire le document de Scott Mitchell sur le site MSDN http://www.microsoft.com/china/msdn/library/webservices/asp.net/URLRewriting.mspx?pf=true#top
Certains experts ont clarifié ici les principes de la réécriture d'URL. Si vous ne comprenez pas, vous pouvez télécharger le code source du document ci-dessus pour l'étudier.
Par souci d'efficacité (le temps des gens est précieux, et celui des programmeurs l'est encore plus), j'ai directement utilisé les composants d'URLRewriter.net. En fait, je n'ai jamais eu d'expérience en réécriture d'URL auparavant, j'ai donc lu grossièrement le source. programme plusieurs fois et a commencé à démarrer. Bien sûr, aucun contenu technique n'est nécessaire au début. Tant que la réécriture est réussie, cela fera du bien. Ensuite, dans le processus de réécriture continu, nous découvrirons les problèmes et trouverons de nouvelles idées et de nouvelles découvertes. . . D'où cet article.
Commençons maintenant. Cette fois, l'accent est mis sur la réécriture d'URL du modèle de date que nous venons de mentionner
http://blog.tyoo.net/Articles/2007/01/18/233030/joshualang.aspx . C'est l'effet final à obtenir ici. .
Bases : composant UrlRewriter.net (bien sûr, vous pouvez l'écrire vous-même), comprenez les
paramètres de l'expression régulière : ArticleID //Numéro d'article [Type : chaîne Longueur : 14 (comme : aaaammjjhhmmss) // Significatif et non répété]
Bloger //Blog Nom d'utilisateur principal [Type : chaîne commençant par une lettre]
Un problème rencontré lors du processus de réécriture d'URL est une erreur 404 lors de l'accès à un répertoire ou un fichier inexistant. La suggestion fournie par ce document sur MSDN est de créer les dossiers nécessaires et les pages vides dans le répertoire du programme. C'est en effet gênant, des milliers de répertoires doivent être créés.
Puisque nous ne pouvons pas simplement accéder à des fichiers de répertoires inexistants, nous n’avons tout simplement pas besoin d’accéder à ces répertoires. Nous devons accéder à nos fichiers existants (toutes mes URL pointent vers une page Default.aspx sous le répertoire racine du blog, puis charger dynamiquement le groupe de contrôle pour générer différentes pages de fonctions d'affichage. Bien sûr, cette fois, nous voulons pointer vers). cette page ~/Default .aspx;
La tâche suivante consiste à transmettre les paramètres, bien sûr l'URL est transmise par valeur. C'est pourquoi il est temps de le réécrire.
Le protagoniste est sur le point de réapparaître : les expressions régulières.
L'utilisation d'expressions régulières ici est vraiment cool ~ Répertoire http://blog.tyoo.net/joshualang/Articles/2007/01/18/Default.aspx , vous pouvez générer des règles de réécriture d'URL comme les suivantes :
< RewriterRule>
<LookFor>~/(w{6,16})/Articles/(d{4})/(d{2})/(d{2})/Default.aspx</LookFor>
<SendTo>~/Default.aspx?Bloger=$1&year=$2&month=$3&day=$4</SendTo>
</RewriterRule>
Lors de la suppression des règles écrites de cette manière, une erreur 404 se produira certainement car la page consultée n'existe pas. Parce qu'il recherchera tout le long de votre répertoire, si vous créez un autre projet de répertoire, il sera trop volumineux. Jetez un œil au code suivant :
<RewriterRule>
.
<LookFor>~/(w{6,16})/Articles/(d{4})/(d{2})/(d{2})/(d{6})/Default.aspx</LookFor >
<SendTo>~/Default.aspx?Bloger=$1&year=$2&month=$3&day=$4&time=$5</SendTo>
</RewriterRule>
Maintenant que j'ai du temps supplémentaire, personne ne choisira de créer un répertoire. Utilisez ensuite pleinement les fichiers existants pour accomplir cette tâche.
En fait, de nombreuses personnes pourraient penser à utiliser des noms de fichiers plutôt que des structures de répertoires. À bien y penser, n'est-ce pas ? Bien entendu, cela nécessite une certaine compréhension des expressions régulières.
D'accord, voyons comment cela fonctionne.
<Règle de réécriture>
<LookFor>~/(w{5,16})/Articles/(d{4})/(d{2})/(d{2})/(d{6}).aspx</ Rechercher>
<SendTo>~/Default.aspx?ArticleID=$2$3$4$5&Bloger=$1</SendTo>
</RewriterRule>
Vous pouvez facilement voir que j'ai utilisé "" pour échapper à "/" et que je l'ai utilisé dans le nom du fichier. La structure actuelle est
http://blog.tyoo.net/joshualang/2007/01/18.
Évidemment, mon ArticleID. est une chaîne basée sur l'année, le mois, le jour, l'heure, les minutes et les secondes, car il est logique d'insérer des données sans tenir compte de la duplication, et l'utilisation du temps ici est également pratique pour les requêtes. La combinaison à 14 chiffres obtenue par $2$3$4$5 est mon ID d'article. L'enregistrement peut être facilement trouvé grâce à la date de publication et au numéro d'article. Le dernier avantage est particulièrement évident lors de la suppression.
Supprimons maintenant la partie temporelle :
<RewriterRule>
<LookFor>~/(w{5,16})/Articles/(d{4})/(d{2})/(d{2}).aspx</LookFor>
<SendTo>~/Default.aspx?ArticleID=$2$3$4&Bloger=$1</SendTo>
</RewriterRule>
À notre tour, nous pouvons supprimer l'URL dans ce modèle : http://blog.tyoo.net/joshualang/Articles/2007.aspx ou même http://blog.tyoo.net/joshualang/Articles/Default.aspx
Isn
.n'est-ce pas très simple ? Mais il faut faire attention à un problème : tout n'est pas possible et peut être réalisé. Il y a bien d'autres choses à considérer, comme :
http://blog.tyoo.net/joshualang/Articles/2007.aspx et http : //blog. Quelle est la différence entre tyoo.net/joshualang/Articles/2007/.aspx ? Ce dernier peut-il fonctionner normalement après avoir suivi les règles ci-dessus ? On ne peut pas
en dire autant : http://blog.tyoo.net/joshualang/Articles/2007/01/08/.aspx n'est pas non plus acceptable. D'autres règles de réponse doivent être définies pour obtenir des effets de réécriture appropriés.
D'accord, l'effet est à peu près là ; voici le code de règle complet :
<!--auteur : Joshua Li ( [email protected] ) QQ:245965348-->
<!-- Règles pour l'affichage du contenu du blog -->
<Règle de réécriture>
<LookFor>~/([A-Za-z]w{5,16})/Default.aspx</LookFor>
<SendTo>~/Default.aspx?Bloger=$1</SendTo>
</RewriterRule>
<!-- Règles pour le listeur d'articles -->
<Règle de réécriture>
<Recherche>~/Articles/(d{4})/(d{2})/(d{2})/(d{1,6})/([A-Za-z]w {5,16}).aspx</LookFor>
<SendTo>~/Default.aspx?ArticleID=$1$2$3$4&Bloger=$5</SendTo>
</RewriterRule>
<Règle de réécriture>
<LookFor>~/Articles/(d{4})/(d{2})/(d{2})/(d{1,6})((/)?).aspx</ Rechercher>
<SendTo>~/Default.aspx?ArticleID=$1$2$3$4</SendTo>
</RewriterRule>
<Règle de réécriture>
<LookFor>~/Articles/(d{4})/(d{2})/(d{2})/([A-Za-z]w{5,16}).aspx</ Rechercher>
<SendTo>~/Default.aspx?ArticleID=$1$2$3&Bloger=$4</SendTo>
</RewriterRule>
<Règle de réécriture>
<LookFor>~/Articles/(d{4})/(d{2})/(d{2})((/)?).aspx</LookFor>
<SendTo>~/Default.aspx?ArticleID=$1$2$3</SendTo>
</RewriterRule>
<Règle de réécriture>
<LookFor>~/Articles/(d{4})/(d{2})/([A-Za-z]w{5,16}).aspx</LookFor>
<SendTo>~/Default.aspx?ArticleID=$1$2&Bloger=$3</SendTo>
</RewriterRule>
<Règle de réécriture>
<LookFor>~/Articles/(d{4})/(d{2})((/)?).aspx</LookFor>
<SendTo>~/Default.aspx?ArticleID=$1$2</SendTo>
</RewriterRule>
<Règle de réécriture>
<LookFor>~/Articles/(d{4})/([A-Za-z]w{5,16}).aspx</LookFor>
<SendTo>~/Default.aspx?ArticleID=$1&Bloger=$2</SendTo>
</RewriterRule>
<Règle de réécriture>
<LookFor>~/Articles/(d{4})((/)?).aspx</LookFor>
<SendTo>~/Default.aspx?ArticleID=$1</SendTo>
</RewriterRule>
<Règle de réécriture>
<LookFor>~/Articles/([A-Za-z]w{5,16}).aspx</LookFor>
<SendTo>~/Default.aspx?Bloger=$1</SendTo>
</RewriterRule>
<Règle de réécriture>
<LookFor>~/Articles/Default.aspx</LookFor>
<SendTo>~/Default.aspx?ArticleID=-1</SendTo>
</RewriterRule>
Remarque : Afin d'éviter que les utilisateurs ne suppriment accidentellement l'extension importante .aspx ici, j'utilise le nom d'utilisateur comme nom d'identification virtuel du fichier.
L'URL finale obtenue : http://blog.tyoo.net/Articles/2007/01/18/015000/joshualang.aspx
Dans le même temps, l'heure maximale à 6 chiffres à la fin est définie pour être supprimable et plus longue, même si elle est perdue. Il est également plus pratique de retrouver la liste la plus proche de l'heure de publication en utilisant certains numéros.
La suppression du nom d'utilisateur n'affectera pas l'utilisation. Vous pouvez toujours obtenir rapidement la liste d'articles la plus appropriée dont vous avez besoin grâce au format d'heure détaillé. Si le nom d'utilisateur est intact, la liste des articles correspondant à l'auteur dans une période précise peut être retrouvée par suppression.
A noter également : le format du nom d'utilisateur ([A-Za-z]{6-16}) et l'ordre de validation des règles.
Résumer:
Après avoir passé le processus régulier de réécriture d'URL, il aura un format strict comme si ce répertoire existait réellement, mais la structure du framework apparaîtra plus pratique et flexible, obtenant ainsi des améliorations clés en termes de fonctionnalités et d'expérience utilisateur. Si vous avez des questions, veuillez répondre et rejoindre la discussion. S'il existe une meilleure façon de le réécrire, je serais heureux de me le faire savoir.
http://www.cnblogs.com/Joshualang/archive/2007/01/19/624302.html