In letzter Zeit war ich mit meinem eigenen Blog-Programm beschäftigt und habe mich natürlich dem Problem der URL-Umschreibung zugewandt, über das in Blogs oft gesprochen wird. Ein Grund ist ein Problem in einem Mehrbenutzer-Blogsystem. Ursprünglich wollte ich mein CSDN-Blog http://blog.csdn.net/joshualang als Beispiel verwenden, aber ich habe darüber nachgedacht und meinen Platz genutzt ( http:/ /www.tyoo.net ), denn hierhin werde ich gehen, nachdem ich meinen Blog fertiggestellt habe.
Wenn die erforderliche URL-Umschreibung nicht wie http://www.tyoo.net/blog/joshualang durchgeführt wird, wird eine Blog-Adresse wie http://www.tyoo.net/blog/default.aspx?Bloger=joshualang angezeigt Sie sollten wissen, dass ein Blog von den meisten Internetnutzern als ein weiteres Zuhause angesehen wird. Im wirklichen Leben berücksichtigen sie die Entfernung der Heimatadresse und die Qualität der Transportmöglichkeiten. Ebenso muss das Haus im Internet eine Hausnummer haben das ist leicht zu merken. Diese Hausnummer ist nicht zu lang (nicht sehr anständig), und das Hinzufügen einer Reihe von Parametern kann die Leute einschüchtern. Wenn Sie den Artikel lesen möchten, müssen Sie sich mit so vielen Dingen auseinandersetzenhttp:// blog.tyoo.net /Articles/Default.aspx?Bloger=joshualang&ArticleID=20070118234530Fühlst du etwas? Werfen wir einen Blick auf einen Effekt, den viele Blog-Programme mittlerweile haben: http://blog.tyoo.net/joshua/Articles/2007/01/18/ Jeder wird die Vorteile dieses Effekts auf einen Blick erkennen, und das ist Dies bringt uns zum Kernpunkt dieses Artikels!
Ja, wir müssen eines unserer Ziele durch eine so sehr regelmäßige Saite erreichen.
Eine brauchbare URL sollte nach folgenden Kriterien ausgewählt werden:
• Kurz.
• Einfach zu tippen.
• Die Struktur der Seite ist ersichtlich.
• „Truncatable“, wodurch Benutzer die Website durch Entfernen von Komponenten der URL durchsuchen können.
Ich muss zu diesem Punkt nicht mehr sagen. Tatsächlich geht es um Einfachheit und Praktikabilität.
Hinweis: Apropos: Es ist notwendig, das Dokument von Scott Mitchell auf der MSDN-Website http://www.microsoft.com/china/msdn/library/webservices/asp.net/URLRewriting.mspx?pf=true#top
bereits
zu lesenEinige Experten haben die Prinzipien des URL-Umschreibens hier klar genug dargelegt. Wenn Sie es nicht verstehen, können Sie den Quellcode des oben genannten Dokuments herunterladen, um es zu studieren.
Aus Effizienzgründen (die Zeit der Menschen ist kostbar und die Zeit der Programmierer ist es noch wertvoller) habe ich direkt die Komponenten von URLRewriter.net verwendet. Tatsächlich hatte ich noch nie Erfahrung mit dem Umschreiben von URLs, daher habe ich die Quelle grob gelesen ein paar Mal programmieren und loslegen. Natürlich sind zu Beginn keine technischen Inhalte erforderlich. Solange das Umschreiben erfolgreich ist, werden wir im kontinuierlichen Umschreibungsprozess die Probleme herausfinden und neue Ideen und Entdeckungen machen. . . Daher dieser Artikel.
Fangen wir jetzt an. Diesmal liegt der Schwerpunkt tatsächlich auf der URL-Umschreibung des gerade erwähnten Datumsmusters
http://blog.tyoo.net/Articles/2007/01/18/233030/joshualang.aspx Dies ist der endgültige Effekt, der hier erzielt werden soll . .
Grundlagen: UrlRewriter.net-Komponente (natürlich können Sie sie selbst schreiben), verstehen Sie die
Parameter des regulären Ausdrucks: ArticleID //Artikelnummer [Typ: String Länge: 14 (wie: yyyymmddhhmmss) // Sinnvoll und nicht wiederholt]
Bloger //Blog Master-Benutzername [Typ: Zeichenfolge, die mit einem Buchstaben beginnt]
Ein beim URL-Umschreibungsprozess aufgetretenes Problem ist ein 404-Fehler beim Zugriff auf ein nicht vorhandenes Verzeichnis oder eine nicht vorhandene Datei. Der Vorschlag dieses Dokuments auf MSDN besteht darin, die erforderlichen Ordner und leeren Seiten im Programmverzeichnis zu erstellen. Dies ist in der Tat mühsam, da Tausende von Verzeichnissen erstellt werden müssen.
Da wir nicht einfach auf nicht vorhandene Verzeichnisdateien zugreifen können, müssen wir auch nicht auf solche Verzeichnisse zugreifen. Wir müssen auf unsere vorhandenen Dateien zugreifen (alle meine URLs verweisen auf eine Default.aspx-Seite im Stammverzeichnis des Blogs und laden dann die Kontrollgruppe dynamisch, um verschiedene Ansichtsfunktionsseiten zu generieren. Diesmal möchten wir natürlich darauf verweisen). Diese Seite ~/Default .aspx;
Die folgende Aufgabe besteht darin, Parameter zu übergeben, natürlich wird die URL als Wert übergeben. Deshalb ist es an der Zeit, es neu zu schreiben.
Der Protagonist taucht gleich wieder auf: reguläre Ausdrücke.
Die Verwendung regulärer Ausdrücke ist hier wirklich cool. Im Verzeichnis http://blog.tyoo.net/joshualang/Articles/2007/01/18/Default.aspx können Sie Regeln zum Umschreiben von URLs wie die folgenden generieren:
<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>
Beim Löschen der so geschriebenen Regeln kommt es auf jeden Fall zu einem 404-Fehler, da die Seite, auf die zugegriffen wird, nicht existiert. Da die gesamte Verzeichnismarkierung durchsucht wird, ist das Erstellen eines weiteren Verzeichnisprojekts zu groß. Schauen Sie sich den folgenden Code an:
<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>
Jetzt, wo ich mehr Zeit habe, wird sich niemand mehr dafür entscheiden, ein Verzeichnis zu erstellen. Nutzen Sie dann die vorhandenen Dateien vollständig aus, um diese Aufgabe abzuschließen.
Tatsächlich denken viele Leute möglicherweise darüber nach, Dateinamen anstelle von Verzeichnisstrukturen zu verwenden. Wenn ich darüber nachdenke, nicht wahr? Dies setzt natürlich ein gewisses Verständnis regulärer Ausdrücke voraus.
Okay, mal sehen, wie es funktioniert.
<RewriterRule>
<LookFor>~/(w{5,16})/Articles/(d{4})/(d{2})/(d{2})/(d{6}).aspx</ Suchen Sie nach >
<SendTo>~/Default.aspx?ArticleID=$2$3$4$5&Bloger=$1</SendTo>
</RewriterRule>
Sie können leicht erkennen, dass ich „“ als Escapezeichen für „/“ verwendet und es im Dateinamen verwendet habe. Die aktuelle Struktur ist
offensichtlich
http://blog.tyoo.net/joshualang/2007/01/18
ist eine Zeichenfolge, die auf Jahr, Monat, Tag, Stunde, Minute und Sekunde basiert, da es sinnvoll ist, Daten ohne Berücksichtigung von Duplikaten einzufügen, und die Verwendung der Zeit hier auch für Abfragen praktisch ist. Die durch $2$3$4$5 erhaltene 14-stellige Kombination ist meine Artikel-ID. Der Datensatz kann anhand des Veröffentlichungsdatums und der Artikelnummer leicht gefunden werden. Der letzte Vorteil wird beim Löschen besonders deutlich.
Jetzt löschen wir den Zeitteil:
<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>
Gegenzug
können wir die URL in dieses Muster löschen: http://blog.tyoo.net/joshualang/Articles/2007.aspx oder sogar http://blog.tyoo.net/joshualang/Articles/Default.aspx
ist das nicht ganz einfach? Aber man muss auf ein Problem achten: Alles ist nicht möglich und kann erreicht werden. Es gibt noch viele weitere Dinge zu beachten, wie zum Beispiel:
http://blog.tyoo.net/joshualang/Articles/2007.aspx und http: //blog. Was ist der Unterschied zwischen tyoo.net/joshualang/Articles/2007/.aspx ? Kann letzteres normal ausgeführt werden, nachdem die oben genannten Regeln befolgt wurden?
Das Gleichekann nicht
gesagt werden: http://blog.tyoo.net/joshualang/Articles/2007/01/08/.aspx ist ebenfalls nicht akzeptabel. Um entsprechende Umschreibeffekte zu erzielen, müssen andere Antwortregeln definiert werden.
Okay, der Effekt ist ungefähr da; hier ist der vollständige Regelcode:
<!--Autor: Joshua Li ( [email protected] ) QQ:245965348-->
<!-- Regeln für Blog Content Displayer -->
<RewriterRule>
<LookFor>~/([A-Za-z]w{5,16})/Default.aspx</LookFor>
<SendTo>~/Default.aspx?Bloger=$1</SendTo>
</RewriterRule>
<!-- Regeln für Artikellister -->
<RewriterRule>
<LookFor>~/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>
<RewriterRule>
<LookFor>~/Articles/(d{4})/(d{2})/(d{2})/(d{1,6})((/)?).aspx</ Suchen Sie nach >
<SendTo>~/Default.aspx?ArticleID=$1$2$3$4</SendTo>
</RewriterRule>
<RewriterRule>
<LookFor>~/Articles/(d{4})/(d{2})/(d{2})/([A-Za-z]w{5,16}).aspx</ Suchen Sie nach>
<SendTo>~/Default.aspx?ArticleID=$1$2$3&Bloger=$4</SendTo>
</RewriterRule>
<RewriterRule>
<LookFor>~/Articles/(d{4})/(d{2})/(d{2})((/)?).aspx</LookFor>
<SendTo>~/Default.aspx?ArticleID=$1$2$3</SendTo>
</RewriterRule>
<RewriterRule>
<LookFor>~/Articles/(d{4})/(d{2})/([A-Za-z]w{5,16}).aspx</LookFor>
<SendTo>~/Default.aspx?ArticleID=$1$2&Bloger=$3</SendTo>
</RewriterRule>
<RewriterRule>
<LookFor>~/Articles/(d{4})/(d{2})((/)?).aspx</LookFor>
<SendTo>~/Default.aspx?ArticleID=$1$2</SendTo>
</RewriterRule>
<RewriterRule>
<LookFor>~/Articles/(d{4})/([A-Za-z]w{5,16}).aspx</LookFor>
<SendTo>~/Default.aspx?ArticleID=$1&Bloger=$2</SendTo>
</RewriterRule>
<RewriterRule>
<LookFor>~/Articles/(d{4})((/)?).aspx</LookFor>
<SendTo>~/Default.aspx?ArticleID=$1</SendTo>
</RewriterRule>
<RewriterRule>
<LookFor>~/Articles/([A-Za-z]w{5,16}).aspx</LookFor>
<SendTo>~/Default.aspx?Bloger=$1</SendTo>
</RewriterRule>
<RewriterRule>
<LookFor>~/Articles/Default.aspx</LookFor>
<SendTo>~/Default.aspx?ArticleID=-1</SendTo>
</RewriterRule>
Hinweis: Um zu verhindern, dass Benutzer hier versehentlich die wichtige .aspx-Erweiterung löschen, verwende ich den Benutzernamen als virtuellen Identifikationsnamen der Datei.
Die endgültige URL lautet: http://blog.tyoo.net/Articles/2007/01/18/015000/joshualang.aspx
Gleichzeitig ist die maximale 6-stellige Zeit am Ende löschbar und länger. auch wenn es verloren geht. Es ist auch am bequemsten, anhand bestimmter Nummern die Liste zu finden, die dem Veröffentlichungszeitpunkt am nächsten liegt.
Das Entfernen des Benutzernamens hat keine Auswirkungen auf die Nutzung. Über das detaillierte Zeitformat können Sie dennoch schnell die am besten geeignete Liste der benötigten Artikel erhalten. Wenn der Benutzername intakt ist, kann durch Löschen die Liste der Artikel gefunden werden, die dem Autor in einem bestimmten Zeitraum entsprechen.
Beachten Sie außerdem: das Format des Benutzernamens ([A-Za-z]{6-16}) und die Reihenfolge der Regelvalidierung.
Zusammenfassen:
Nach dem Durchlaufen des regulären URL-Umschreibungsprozesses wird es ein striktes Format haben, als ob dieses Verzeichnis tatsächlich vorhanden wäre, aber die Framework-Struktur wird komfortabler und flexibler erscheinen, wodurch wichtige Verbesserungen in der Funktionalität und Benutzererfahrung erzielt werden. Lassen Sie uns hier zunächst aufhören. Wenn Sie Fragen haben, antworten Sie bitte und beteiligen Sie sich an der Diskussion. Wenn es eine bessere Möglichkeit gibt, es umzuschreiben, lasse ich es mich gerne wissen.
http://www.cnblogs.com/Joshualang/archive/2007/01/19/624302.html