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] Utilisation de # dans les URL réécrites


Sujet :

Apache

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2006
    Messages : 26
    Points : 16
    Points
    16
    Par défaut [URL rewriting] Utilisation de # dans les URL réécrites
    Bonjour,

    je connais un peu l'url rewriting, mais là j'ai une colle.

    voici l'url a modifier:
    www.monsite.com?lang=fr&cat=news&subcat=news

    url rewrité:
    www.monsite.com/fr/news/news

    le rewriting ci-dessus fonctionne très bien..!

    par contre j'ai une colle sur ce type d'url:
    http://www.monsite.com/?lang=fr&cat=...&subcat=images#ma_page

    je sais que le caractère suivant '#' est utilisé pour les commentaires dans le htaccess.
    Donc, comment faire pour suivre la logique de l'url rewriting en tenant compte de cette nouvelle version?

    l'idéale serait d'avoir ce type de résultat:
    www.monsite.com/fr/news/news#ma_page

    merci d'avance

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Pouvez-vous essayer d'ajouter le flag noescape (ou NE) à votre règle ? Car sinon le # de votre ancre sera encodé en %23, il serait alors considéré comme faisant partie de l'URL et le résultat serait bien différent (une 404, par exemple, s'il est alors intégré au chemin puisque celui-ci devient erroné).

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2006
    Messages : 26
    Points : 16
    Points
    16
    Par défaut
    Merci de votre réponse..

    Pourriez-vous me faire , s.v.p, un petit exemple pour que je comprenne ou mettre le flag?

    Merci d'avance

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Ben :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^([^/]+)/([^/]+)/([^/]+)$ /?lang=$1&cat=$2&subcat=$3#ma_page [R,L,NE]

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2006
    Messages : 26
    Points : 16
    Points
    16
    Par défaut
    Merci julp pour les réponses rapides et claires..

    mille merci...

    je test au plus vite ;-)

  6. #6
    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
    Points : 12 977
    Points
    12 977
    Par défaut
    Pour info, les ancres internes #... ne sont jamais envoyées au serveur par le navigateur, elles ne servent qu'à ce dernier pour naviguer au sein d'un document déjà télécharger. Et même si d'aventure une URL avec # pointe sur une page distante, ce # ne sera quand même pas envoyé au serveur. On peut donc toujours essayer de réécrire avec un # dans la cible mais il ne sera pertinent que sur redirection du navigateur.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2006
    Messages : 26
    Points : 16
    Points
    16
    Par défaut
    re-bonjour,

    j'ai testé ce que vous m'avez donné, mais malheureusement cela ne fonctionne pas.

    voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Options +FollowSymlinks
    RewriteEngine On
    RewriteRule ^(fr|en|de)/([^\/]*)/([^\/]*)/([^\/]*)$       	index.php?lang=$1&cat=$2&subcat=$3&page=$4#multimedia_images__0 [NE,L]
    le dernier élément :
    ou
    ou
    peut être de 3 manières différentes: 0, 1 ou 2. Ces valeurs correspondent à la langue (0=fr, 1=de, et 2=en).

    Dès que l'on clique sur un lien contenant ce genre d'url, une page s'affiche au dessus du site pour afficher une galerie.

    est ce que vous avez une idée de ce qui ne fonctionne pas?

    merci d'avance

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    En effet, comme l'explique _Mac_, l'ancre est destinée au client donc pour qu'elle puisse être exploitée par celui-ci il faut que le client ait connaissance de l'URL de redirection. On ne peut procéder à une redirection interne comme ici, puisque ce n'est pas au serveur de prendre en considération l'ancre (ce qu'il ne peut faire de toute façon).

    Donc il faut qu'il y ait vraiment redirection , par conséquent employer une URL (complète) ou bien recourir à l'option R au niveau du RewriteRule. Mais, on s'écarte surement de vos souhaits de départ, consistant à justement cacher l'URL réelle : les deux sont incompatibles.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2006
    Messages : 26
    Points : 16
    Points
    16
    Par défaut
    ok..!

    j'ai peut-être oublié de dire qu'il y a des fonctions javascript qui récupèrent l'url et appel la ou les pages souhaitée(s) en AJAX pour l'afficher....!!!

    a+

  10. #10
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Ça ne change rien, puisque nous sommes côté serveur avec la réécriture. Tant que la redirection reste interne, l'URL est inchangée pour le client, et ce, quel qu'il soit (Javascript compris) : avec Javascript vous récupérerez l'URL demandée aussi, étant côté client, donc la situation restera strictement la même (à moins de mapper l'ancre en paramètre GET et de générer le déplacement à l'ancre avec PHP mais ce serait inutilement lourd et pas forcément portable - paramètre que vous avez déjà, cela dit : lang).

Discussions similaires

  1. [URL rewriting] Changer le # dans l'URL
    Par Fredo02 dans le forum Apache
    Réponses: 1
    Dernier message: 29/04/2011, 12h32
  2. Utiliser tilde dans les url
    Par SoulReaper dans le forum Apache
    Réponses: 4
    Dernier message: 10/02/2010, 19h07
  3. Les URL rewriting me rendent dingue!
    Par webrider dans le forum Apache
    Réponses: 6
    Dernier message: 06/09/2006, 13h39
  4. [Configuration] php pour recuperer une variable dans l'url sans utiliser $_GET
    Par mikebranque dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 22/06/2006, 20h22

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