Rewriting

Résolu
coulis Messages postés 121 Date d'inscription lundi 20 octobre 2003 Statut Membre Dernière intervention 24 juin 2010 - 23 mai 2006 à 13:24
cs_Alexis35 Messages postés 44 Date d'inscription vendredi 21 octobre 2005 Statut Membre Dernière intervention 2 mai 2011 - 22 avril 2008 à 14:18
Bonjour,
Je souhaite optimiser un site en .net (vb) pour du  référencement. Je pense utiliser le rewriting, mais tout ce que je trouve comme info et la configuration du fichier "web.config" avec l'ecriture manuelle des urls.

Dans mon cas j'ai un fichier usercontrole (ascx) qui contient un datagrid avec des centaines de réponses... coment faire pour crérer des urls rewriting à la volée. Je n'ai rien rtouvé sur le net de vraiment explicite et simple à comprendre.

Merci d'avance

Thierry

12 réponses

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
23 mai 2006 à 14:03
comment ca le lien est indigeste ? :-p 

Ce qu'il faut surtout comprendre c'est les httpmodule ensuite tu pourras faire ton rewriting toi même ;-) mais je n'ai aucun lien sur les httpmodule :-(

pour un exemple plus concret du rewriting ci dessus : http://www.aspfr.com/codes/IMPLEMENTER-TRES-FACILEMENT-URLREWRITER-REECRITURE-URL-NET-GENIAL_31527.aspx 

<hr />Cyril - MVS - MCP
3
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
23 mai 2006 à 15:53
Public Class HttpModuleRewriting
    Implements IHttpModule


    Private _context As HttpContext


    Public Sub Dispose() Implements System.Web.IHttpModule.Dispose


    End Sub


    Public Sub Init(ByVal context As System.Web.HttpApplication) Implements System.Web.IHttpModule.Init
        _context = context.Context
        AddHandler context.BeginRequest, AddressOf context_beginRequest
    End Sub


    Protected Sub context_beginRequest(ByVal sender As Object, ByVal e As EventArgs)
        _context.RewritePath("tapage.aspx?id=toto")
    End Sub


End Class





<hr />

Cyril - MVS - MCP
3
coulis Messages postés 121 Date d'inscription lundi 20 octobre 2003 Statut Membre Dernière intervention 24 juin 2010
23 mai 2006 à 16:18
Merci pour tout je vais me débrouiller avec tout ça

Thierry
3
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
23 mai 2006 à 13:36
Bonjour,

tout est expliqué ici : http://www.microsoft.com/france/msdn/aspnet/articles/2004-06-02-URLRewriting.mspx si tu veux faire ton propre rewriting il faudra utiliser des httpmodule ...

<hr />Cyril - MVS - MCP
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
coulis Messages postés 121 Date d'inscription lundi 20 octobre 2003 Statut Membre Dernière intervention 24 juin 2010
23 mai 2006 à 13:56
J'ai déja trouver ce lien. Mais Aurais-tu quelque chose de plus digeste? J'ai du mal à tout saisir et surtout je ne vois pas ou les urls à la volées sont créer dans ce lien?
Je n'ai jamais fait de rewriting alors je cherche quelque chose avec une approche plus cool et si possible avec des exemples concrets.

Thierry
0
coulis Messages postés 121 Date d'inscription lundi 20 octobre 2003 Statut Membre Dernière intervention 24 juin 2010
23 mai 2006 à 14:32
Indigeste : c'est doit même qui dit que c'est un peu compliquer à comprendre, voir le lien ci-dessous dans les remarques.
http://www.aspfr.com/codes/REECRITURE-URL-DANS-ASP-NET-URL-REWRITER_31258.aspx 
Je vos essayer de lire ceal tout de même dans le détail.

Ok je vais voir cela et essayer de trouver quelques chose sur les httpmodule. Car il est vrai que si je pouvais faire mon rewriting ce serait génial.

Merci d'avance cyril

Thierry
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
23 mai 2006 à 14:37
pour faire un httpmodule en gros, il faut faire une classe qui implemente IHttpModule, cette interface te force à implémenter une méthode (je me souviens plus du nom) en argument de cette methode tu as un objet HttpContext, tu t'abonnes à son evenement beginrequest, dans cet evenement tu recuperes l'url (context.Request.url) tu fais ton traitement sur l'url, et tu fais un context.rewritepath("tapage.aspx?id=toto") en gros voila comment ca fonctionne :p

si besoin je peux meme te fournir le code de ce que j'ai dit au dessus ;)

<hr />Cyril - MVS - MCP
0
coulis Messages postés 121 Date d'inscription lundi 20 octobre 2003 Statut Membre Dernière intervention 24 juin 2010
23 mai 2006 à 14:48
Ok pour le code à  fournir, je suis preneur...
Je vais essayer et je reviendrais si j'ai des problèmes.
Merci pour tout

Thierry
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
23 mai 2006 à 14:58
public class RewritingModule : IHttpModule
{


    private HttpContext Context;


    public void Dispose()
    {
    }


    public void Init(HttpApplication context)
    {
        context.BeginRequest += new EventHandler(context_BeginRequest);
        Context = context.Context;
    }


    void context_BeginRequest(object sender, EventArgs e)
    {
        // ici tu obtient l'url complete
        //Context.Request.RawUrl


        Context.RewritePath("tapage.aspx?id=truc");
    }


}





<hr />

Cyril - MVS - MCP
0
coulis Messages postés 121 Date d'inscription lundi 20 octobre 2003 Statut Membre Dernière intervention 24 juin 2010
23 mai 2006 à 15:50
Ok tu n'aurais pas ça en VB svp

Thierry
0
cs_Alexis35 Messages postés 44 Date d'inscription vendredi 21 octobre 2005 Statut Membre Dernière intervention 2 mai 2011
22 avril 2008 à 11:33
euh, Bonjour,

Je suis tres interrssé par ce code!

je me suis inspiré de ca

j'ai donc :

Module.vb :
Imports System

Imports System.Collections.Generic

Imports System.Text

Namespace MyProject.Urls

  Public Class [Module]

        Implements System.Web.IHttpModule
        Public Sub Init(ByVal Appl As System.Web.HttpApplication) Implements System.Web.IHttpModule.Init

            AddHandler Appl.BeginRequest, AddressOf Rewrite_BeginRequest

        End Sub

        Public Sub Dispose() Implements System.Web.IHttpModule.Dispose

        End Sub
    Public Sub Rewrite_BeginRequest(ByVal sender As Object, ByVal args As System.EventArgs)

      'on cast le sender en HttpAplication

      Dim Appl As System.Web.HttpApplication = DirectCast(sender, System.Web.HttpApplication)

      'On initialise le moteur de réécriture

      Dim e As New Engine(Appl)

      Dim r As String = e.Process()

      If r <> "" Then

        SendToNewUrl(r, Appl)

      End If

    End Sub

    Public Sub SendToNewUrl(ByVal url As String, ByVal Appl As System.Web.HttpApplication)

      'On réécrit l&#8217;url grace à la methode RewritePath

      Appl.Context.RewritePath(url)

    End Sub

  End Class

End Namespace

RealUrls.vb:

Imports System

Imports System.Collections.Generic

Imports System.Text

Namespace MyProject.Urls

  Public Class RealUrls

        Public Shared Function getVenteUrl(ByVal cleanUrl As String) As String

            If cleanUrl.Contains("-") Then

                Dim tabChar As Char() = New Char() {"-"c, "."c}

                Dim tab As String() = cleanUrl.Split(tabChar)

                Return "Default.aspx?transac=" + tab(1)

            Else

                Return "Default.aspx"

            End If

        End Function

        Public Shared Function getDefaultUrl() As String

            Return "Default.aspx"

        End Function

  End Class

End Namespace

CleanUrls.vb :

Imports System

Imports System.Collections.Generic

Imports System.Text

Namespace MyProject.Urls

  Public Class CleanUrls

        Public Shared Function getVenteUrl(ByVal ID_Transac As String) As String
            If ID_Transac = 1 Then
                Return "Immobilier-Vente.aspx"
            End If

        End Function

        Public Shared Function getVenteUrl() As String

            Return "Immobilier.aspx"

        End Function

  End Class

End Namespace

et Engine.vb :

Imports System

Imports System.Collections.Generic

Imports System.Text

Namespace MyProject.Urls

  Class Engine

    Private app As System.Web.HttpApplication

    Public Sub New(ByVal httpApp As System.Web.HttpApplication)

      app = httpApp

    End Sub

    Public Function Process() As String

            If app.Request.AppRelativeCurrentExecutionFilePath.Contains("~/Immobilier-Vente") Then

                Return RealUrls.getVenteUrl(app.Request.AppRelativeCurrentExecutionFilePath)

            End If

            If app.Request.AppRelativeCurrentExecutionFilePath.Contains("~/Immobilier") Then

                Return RealUrls.getDefaultUrl()

            End If

      Return ""

    End Function

  End Class

End Namespace

et ensuite je fais quoi?

Désolé mais je suis un peu perdu la...
0
cs_Alexis35 Messages postés 44 Date d'inscription vendredi 21 octobre 2005 Statut Membre Dernière intervention 2 mai 2011
22 avril 2008 à 14:18
en fait ma question c'est ce que l'on doit faire du http module que l'on a créé pour pouvoir s'en servir pour faire de l'url rewriting
0
Rejoignez-nous