IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Apache Discussion :

Url rewriting question


Sujet :

Apache

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2011
    Messages : 44
    Par défaut Url rewriting question
    Bonjour à tous, voila j'utilise l'url rewriting pour mon site web,

    mais j'ai quelque question :

    1 comment faire, pour transformer les tien index.php?Page=accueil&Etape=1 en Accueil/Etape1 ou Accueil/Etape/1

    Voici mon script htaccess :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    RewriteEngine On
    RewriteRule ^index$ index.php?page=/
    RewriteRule ^([a-zA-Z0-9-]*)$ index.php?page=$1
    2 Comment je peux bien optimiser se script ?

    Merci d'avoir lut

  2. #2
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Il marche ce script ou pas ? Si tu parles d'optimiser le script, c'est qu'il fonctionne : que cherches-tu comme optimisation ?

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2011
    Messages : 44
    Par défaut
    Bah j'aimerai savoir si il y à pas un meilleur code pour ce système est comment faire pour transformer les tien index.php?Page=accueil&Etape=1 en Accueil/Etape1 ou Accueil/Etape/1 ?

  4. #4
    Membre averti
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Avril 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Avril 2012
    Messages : 14
    Par défaut
    Je crois qu'on cherche la même chose, je vais essayer d'être plus clair :

    pour naviguer sur mon site les utilisateurs voient des URL du type :
    monsite.com/module1/show_content.php?obj=host-25&id=123

    J'aimerais mieux qu'il voient quelque chose comme ça :
    monsite.com/view_host-25_123.html

    L'URL Rewriting peut faire ça dans le but du SEO mais moi ça ne m’intéresse pas je souhaite juste modifier l'URL que l'utilisateur va voir dans la barre d'adresse, pas celle que les robots vont crawler ou autre.

    Ça peut se faire avec de l'url rewriting ou il faut que je ré-écrive tous mes liens à la main pour leur donner la forme voulue?


    Je suis tombé sur un exemple sur un forum mais je ne l'ai pas bien compris, je sais pas si ça correspond à ce que je veut :

    URL canoniques : une seule URL pour une même ressource / fichier

    Sur de nombreux sites (surtout lorsque vous commencer à utiliser la réécriture d'URL), il existe plusieurs URL pour une même ressource. Une que l'on appelle canonique et qui est utilisée et distribuée et d'autres qui sont juste des raccourcis, des liens internes etc.

    Indépendamment de la requête effectuée, on cherche à afficher l'URL canonique (l'URL que l'on souhaite diffuser)

    Pour cela, nous allons effectuer une redirection externe HTTP pour toutes les URLs qui ne sont pas canoniques grâce au drapeau de redirection [R]. Le visiteur ne verra donc que l'URL canonique quelle que soit l'adresse entrée.

    RewriteEngine On
    RewriteRule ^/~([^/]+)/?(.*) /u/$1/$2 [R]
    RewriteRule ^/u/([^/]+)$ /$1/$2/ [R]

    Dans cet exemple ci-dessus, nous effectuons une redirection HTTP pour toutes les URL non-canoniques afin de les afficher correctement dans le navigateur.
    Les règles ci-dessus remplacent « /~user » par l'URL canonique « /u/user » et corrige le problème du slash manquant pour « /u/user ».
    Merci de vos réponses

  5. #5
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Pour utiliser la réécriture d'URL, il faut utiliser les expressions régulières. C'est la base du truc. Une expression régulière est une syntaxe qui définit un masque pour identifier des chaînes de caractères. Si on reprend le besoin de deathart :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Accueil/Etape1 => index.php?Page=accueil&Etape=1
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Accueil/Etape/1 => index.php?Page=accueil&Etape=1
    Pour l'exemple, on va oublier le fait que le mot Accueil s'écrit avec un A majuscule à gauche et un a minuscule à droite. Il faut que les valeurs soient les bonnes partout car c'est difficile de convertir des caractères avec mod_rewrite. Cela signifie que si la bonne URL finale doit être index.php?Page=accueil&Etape=1 avec un a minuscule, il faut que l'URL d'entrée contienne ce a minuscule (donc accueil/Etape1 ou accueil/Etape/1).

    Bref, le truc, c'est d'essayer de voir comment on peut identifier les blocs colorés. Une fois qu'on a trouvé une façon de faire, ce sera très facile de construire les URL avec les paramètres par un jeu de références.

    Dans le premier cas, Accueil est facile à repérer : c'est le premier groupe de caractères avant le premier /. Pour Etape et 1, c'est plus difficile. On voit qu'il y a un seul bloc de caractères (Etape1) qu'il faut couper en 2 alors qu'il n'y a pas de séparateur évident. On constate juste que 1 est un chiffre et Etape ne contient que des lettres. Ce sont des éléments qu'on sait facilement repérer avec des expressions régulières. On a donc l'approche suivante pour le premier cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (un premier groupe de caractères différents de /)/(des lettres)(des chiffres)
    La question à laquelle je ne sait pas répondre c'est de savoir si c'est un masque d'URL fonctionnellement correct. Seul deathart peut répondre à la question. Si on suppose que oui, la façon d'écrire ça en expression régulière est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ^([^/]*)/([a-zA-Z]*)([0-9]*)$
    Le tout premier caractère ^ indique le début de la chaîne de caractères à analyser et $ marque la fin de cette chaîne de caractères. [^/] signifie un caractère différent de /.
    La règle de réécriture qui va avec est tout simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^([^/]*)/([a-zA-Z]*)([0-9]*)$ index.php?Page=$1&$2=$3 [L]
    Les $1, $2 et $3 font tout simplement référence aux groupes de caractères entre parenthèses : $1 fait référence à ([^/]*) et ainsi de suite. * est un multiplicateur qui signifie "un nombre quelconque de fois (éventuellement 0) le caractère précédent".

    Pour le second cas, c'est en fait plus simple car on peut utiliser le / comme séparateur. Cela donne le masque suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (un premier groupe de caractères différents de /)/(un second groupe de caractères différents de /)/(le reste)
    Comme vous avez suivi, vous savez immédiatement construire la RewriteRule qui va bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^([^/]*)/([^/]*)/(.*)$ index.php?Page=$1&$2=$3 [L]
    Le . dans (.*) signifie n'importe quel caractère.
    Personnellement, cette réécriture, et donc les URL qui vont avec, est beaucoup plus simple et fiable que la première. Solution à privilégier.


    Maintenant, le cas de tom.com. Ben même punition :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    view_host-25_123.html => module1/show_content.php?obj=host-25&id=123
    J'ai volontairement supprimé la partie monsite.com/ des URL à vérifier car c'est ce que mod_rewrite fait quand on l'utilise dans un .htaccess.

    Là, on est dans le second cas précédent : on a des délimitateurs évidents, donc le masque est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    view_(un premier groupe de caractères différents de _)_(un second groupe de caractères différents de _).html
    Et si vous avez suivi jusqu'ici, maintenant l'écriture de la RewriteRule est plus que triviale :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^view_([^_]*)/([^_]*)\.html$ module1/show_content.php?obj=$1&id=$2 [L]
    Vous noterez le \ devant le . pour que le . signifie vraiment le caractère . et pas n'importe quel caractère.

  6. #6
    Membre averti
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Avril 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Avril 2012
    Messages : 14
    Par défaut
    Ok je crois que je vois bien, un grand merci pour ta réponse.
    Pour moi c'est résolu !

  7. #7
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2011
    Messages : 44
    Par défaut
    Bonjour merci pour votre réponse ça ma bien avancer, mais le problème quand j'utilise mon css et javascript ne fonctionne pas très bien :s en claire j'ai juste le html et pas le css/js

  8. #8
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2011
    Messages : 44
    Par défaut
    Bonjour,

    donc voici des nouvels de ma réécriture d'url, donc maintenant tous vas bien sauf sur mon vps !!!

    donc déjà mon httacces :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    #--------------------------------------------------
    # Répertoire : beta
    #--------------------------------------------------
     
    # Le serveur doit suivre les liens symboliques :
    Options +FollowSymlinks
     
    # Activation du module de réécriture d'URL :
    RewriteEngine On
     
    #--------------------------------------------------
    # Règles de réécriture d'URL :
    #--------------------------------------------------
     
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f 
     
    RewriteRule ^([^/]*)-([^/]*)-(.*)$ index.php?Page=$1&$2=$3 [L]
    RewriteRule ^([a-zA-Z0-9-]*)$ index.php?Page=$1 [L]
     
    #--------------------------------------------------
    # Gestion d'erreur :
    #--------------------------------------------------
     
    ErrorDocument 404  /Templates/errors/404.php
    Mon problème sur mon vps c'est qu'il me met une erreur qui parle pas beaucoup :

    Error.
    Alors que sur mon ordi en local tous vas bien !!!

    Et aussi petite question quand par exemple je met juste http://mon-site-web.fr/ j'ai re l'érreur :

    Error.
    Comment faire ?

    Merci de votre aide

  9. #9
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Qu'y a-t-il dans les logs d'erreur d'Apache ?

Discussions similaires

  1. URL rewriting question
    Par lelectronique.com dans le forum Apache
    Réponses: 4
    Dernier message: 07/02/2009, 17h50
  2. [URL Rewriting] Question sur le .htaccess (Redirect)
    Par vdumont dans le forum Apache
    Réponses: 3
    Dernier message: 26/12/2007, 12h48
  3. [URL Rewriting] questions générales
    Par metfan dans le forum Apache
    Réponses: 2
    Dernier message: 07/09/2007, 09h27
  4. Si vous avez des questions sur Apache, HTAccess, URL rewriting avec Apache, etc
    Par Marc Lussac dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 28/08/2007, 19h09
  5. Url rewriting : 2 questions
    Par Msieurduss dans le forum Apache
    Réponses: 2
    Dernier message: 01/10/2006, 09h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo