J'ai vu sur Internet que de nombreux amis réécrivaient des URL dans asp.net et utilisaient la méthode HttpHandle+Server.Transfer. En fait, cette méthode est fausse. Premièrement, HttpHandle ne peut pas implémenter urlrewrite ; deuxièmement, Server.Transfer est une redirection standard, pas du tout urlrewrite.
En fait, vous n'avez pas besoin d'implémenter votre propre HttpHandle ou HttpModule pour implémenter urlrewrite. Il peut être facilement implémenté avec quelques lignes de code.
Ce que je présente ici concerne un hôte virtuel. L'hôte virtuel est différent de votre propre serveur. Vous n'avez pas l'autorisation de modifier iis, ni l'autorisation d'installer des plug-ins iis tels que iis rewrite. Mais nous pouvons toujours remplir facilement les fonctions requises.
La méthode spécifique est la suivante : ouvrez global.asax.cs et localisez protected void Application_BeginRequest (Object sender, EventArgs e). D'après le nom de la méthode, je pense pouvoir deviner ce qu'elle fait. Entrez le code suivant :
protected void Application_BeginRequest (Object sender, EventArgs e)
{
string oldUrl = HttpContext.Current.Request.RawUrl;
modèle de chaîne = @"^(.+)default/(d+).aspx(?.*)*$";
string replace = "$1default.aspx?id=$2";
if(Regex.IsMatch(oldUrl, pattern, RegexOptions.IgnoreCase | RegexOptions.Compiled))
{
string newUrl = Regex.Replace(oldUrl, pattern, replace, RegexOptions.Compiled | RegexOptions.IgnoreCase);
this.Context.RewritePath(newUrl);
}
}
Avec le code ci-dessus, j'accède à une URL similaire à : .../default/123.aspx Bien entendu, cette URL n'existe pas sur mon ordinateur, elle sera donc dirigée vers : .../default.aspx ? =123.
Bien sûr, en utilisant des expressions régulières puissantes, vous pouvez réécrire l'URL selon vos propres besoins. Tout cela se fait silencieusement côté serveur, et le client n'en aura pas conscience. Puisqu'il se trouve sur un hôte virtuel, nous ne pouvons rediriger le fichier .aspx que s'il s'agit de notre propre serveur, nous pouvons traiter n'importe quel suffixe en enregistrant simplement le suffixe dans iis. Par exemple, vous pouvez enregistrer un type tel que *.myweb, de sorte que lorsque d'autres personnes visitent default/456.myweb, vous puissiez le rediriger vers default.aspx?id=456. En un mot, tant que vous y réfléchissez, .net peut vous aider à le réaliser, et tout cela ne nécessite pas beaucoup de code.