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 :

Supprimer des paramètres en fin d'url


Sujet :

Apache

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur web chez Yes we Net, agence web basée à Paris
    Inscrit en
    Avril 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur web chez Yes we Net, agence web basée à Paris
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 7
    Points : 4
    Points
    4
    Par défaut Supprimer des paramètres en fin d'url
    Bonjour,

    Après de multiples recherches, je n'arrive pas à trouver de solution à mon problème.

    Je vous explique le besoin : je voudrais que toute url sur mon site commençant par
    index.php?page=shop.cart&option=com_virtuemart
    ou par
    index.php?option=com_virtuemart&page=shop.cart
    n'accepte pas d'autres paramètres.

    Exemple : l'url
    index.php?page=shop.cart&option=com_virtuemart&Itemid=27
    deviendrait
    index.php?page=shop.cart&option=com_virtuemart
    Quel sont les directives de réécritures qui me permettront de réaliser ceci ?
    Je vous remercie d'avance pour votre aide!

  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
    Points : 12 977
    Points
    12 977
    Par défaut
    Bonjour,

    Il faut utiliser mod_rewrite avec les RewriteCond mais c'est plutôt tordu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    RewriteEngine on
     
    RewriteCond %{QUERY_STRING} ^(page=[^&]*&option=[^&]*)& [OR]
    RewriteCond %{QUERY_STRING} &(page=[^&]*&option=[^&]*)
    RewriteRule .* index.php?%1 [R=301,L]
     
    RewriteCond %{QUERY_STRING} ^(option=[^&]*&page=[^&]*)& [OR]
    RewriteCond %{QUERY_STRING} &(option=[^&]*&page=[^&]*)
    RewriteRule .* index.php?%1 [R=301,L]
    Je n'ai pas testé donc je ne sais pas si ça marche. Tu noteras qu'il n'y a pas de test sur index.php. Je n'en ai pas mis pour simplifier. A toi de l'ajouter si nécessaire.

    Personnellement, je trouve ça très étrange de faire ce genre de redirection. Faire ça avec mod_rewrite passe à peu près car tu as 2 paramètres, mais s'il faut gérer plus de paramètres ou différents, je pense qu'il faut plutôt gérer cette redirection par PHP, ce sera plus simple pour gérer les différentes combinatoires.

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur web chez Yes we Net, agence web basée à Paris
    Inscrit en
    Avril 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur web chez Yes we Net, agence web basée à Paris
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Bonsoir,

    Merci pour ta réponse rapide.

    Je suis d'accord avec toi qu'en PHP ça serait beaucoup plus facile de gérer ça, mais c'est un bug sous Joomla + Virtuemart.. j'ai jeté un oeil sous le capot, fait diverses modifs du code PHP mais pas facile dans cette usine à gaz de toucher la bonne ligne de code sans créer une vulnérabilité, du coup j'ai choisi de le faire en .htaccess

    J'ai essayé le code que tu as donnée, le paramètre Itemid disparait bien dans les deux cas mais ça me rajoute l'url absolue du serveur avant index.php :
    www.nomdusite.com/[...]/www/index.php?page=shop.cart&option=com_virtuemart
    J'imagine qu'il doit y avoir juste un détail à changer, mais je ne vois pas..

    Une idée ?

  4. #4
    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
    Tu as mis ce code dans un fichier .htaccess ou directement dans le fichier httpd.conf ou équivalent ?

    Essaie en ajoutant un / devant index.php dans la RewriteRule.

  5. #5
    Candidat au Club
    Homme Profil pro
    Développeur web chez Yes we Net, agence web basée à Paris
    Inscrit en
    Avril 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur web chez Yes we Net, agence web basée à Paris
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Oui oui j'avais bien mis le code dans un fichier .htaccess à la racine du site.
    Bravo à présent avec le / devant index.php cela fonctionne correctement .

    Par contre après quelques tests sur le site je me rend compte qu'il y a aussi redirection de :
    monsite.com/index.php?option=com_virtuemart&page=shop.browse&category_id=19&Itemid=27
    vers :
    monsite.com/index.php?option=com_virtuemart&page=shop.browse
    Pourtant l'url ne commance ni par index.php?page=shop.cart&option=com_virtuemart ni par index.php?option=com_virtuemart&page=shop.cart...

    C'est dû à quoi tu pense ?

  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
    Regarde bien les règles, notamment les RewriteCond : qu'est-ce qu'on y voit ? Uniquement le nom des paramètres option et page, et aucune valeur claire pour ces paramètres. Pour les valeurs, j'ai juste mis des trucs génériques [^&]* car j'ai supposé, visiblement à tort, que tu demandais une redirection générale par rapport aux 2 paramètres option et page indépendamment des valeurs. Si tu veux une redirection par rapport aux paramètres + des valeurs fixes, remplace mes valeurs génériques [^&]* par de vraies valeurs.

  7. #7
    Candidat au Club
    Homme Profil pro
    Développeur web chez Yes we Net, agence web basée à Paris
    Inscrit en
    Avril 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur web chez Yes we Net, agence web basée à Paris
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Oui bien sur, un grand merci pour ton aide _Mac_.

    Je met mon code final pour ceux qui ont le même besoin :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    RewriteEngine On
     
    RewriteCond %{QUERY_STRING} ^(page=shop.cart&option=com_virtuemart)& [OR]
    RewriteCond %{QUERY_STRING} &(page=shop.cart&option=com_virtuemart)
    RewriteRule .* /index.php?%1 [R=301,L]
     
    RewriteCond %{QUERY_STRING} ^(option=com_virtuemart&page=shop.cart)& [OR]
    RewriteCond %{QUERY_STRING} &(option=com_virtuemart&page=shop.cart)
    RewriteRule .* /index.php?%1 [R=301,L]
    Juste une question de pure compréhension, à quoi sert à chaque fois la deuxième ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [OR]
    RewriteCond %{QUERY_STRING} &(...)
    je veux dire qu'est-ce qu'elle indique de plus, vue qu'avec la première ligne on définit déjà l'url que l'on veut rediriger ?

  8. #8
    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
    C'est pour le cas où page=shop.cart&option=com_virtuemart ne serait pas au tout début de la query string. Par exemple ...?bla=bla&page=shop.cart&option=com_virtuemart. Si ce cas ne t'intéresse pas, supprime la ligne et le [OR] de la première ligne.

  9. #9
    Candidat au Club
    Homme Profil pro
    Développeur web chez Yes we Net, agence web basée à Paris
    Inscrit en
    Avril 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur web chez Yes we Net, agence web basée à Paris
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    En effet je n'en avais pas besoin, je l'enlève donc ^^
    Merci pour toutes ces infos !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [URL rewriting] Supprimer des paramètres de l'URL
    Par yann18 dans le forum Apache
    Réponses: 5
    Dernier message: 09/06/2010, 14h04
  2. Passer des paramètres cachés dans une URL?
    Par PeteZah dans le forum C#
    Réponses: 2
    Dernier message: 09/09/2008, 14h41
  3. Passer des paramètres à SugarCRM dans l'url
    Par adilooo dans le forum SugarCRM
    Réponses: 0
    Dernier message: 28/04/2008, 17h48
  4. $_POST : supprimer les paramètres passés par l'url
    Par yosraisi dans le forum Langage
    Réponses: 4
    Dernier message: 21/04/2008, 12h19
  5. comment supprimer des caracteres en fin de chaines
    Par BernardT dans le forum Langage
    Réponses: 1
    Dernier message: 19/07/2006, 17h41

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