[RESOLU] Rewrite d'URL avec .htaccess ou autre

GonabGonab Member
février 2015 modifié dans Entraide
Bonjour à tous,

Je bloque un peu sur de la réécriture de certains de mes URL grâce à mon fichier .htaccess. Connaissant peu pour le moment PluXML, peut-être y-a-t-il interférence avec le rewrite déjà en place.

Je cherche à réécrire l'adresse: http://www.prestigeauto.fr/vehicules-occasions-la-rochelle/&m=JEEP par http://www.prestigeauto.fr/vehicules-occasions-jeep

J'ai essayé plusieurs choses déjà, mais rien ne fonctionne. Voilà ma dernière règle en date qui me renvoie un beau 404 lorsque je tente de saisir l'adresse souhaitée.
### REWRITE DE MES URL OCCASIONS
RewriteRule ^vehicules-occasions-jeep$ ^vehicules-occasions-la-rochelle/&m=JEEP [L,R=301]

Voici d'ailleurs tout le code de mon .htaccess, car il y a peut-être des manques au-delà.
SetEnv PHP_VER 5

# BEGIN -- Pluxml

Options -Multiviews

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l

# Réécriture des urls
RewriteRule ^(?!feed)(.*)$ index.php?$1 [L]
RewriteRule ^feed\/(.*)$ feed.php?$1 [L]
</IfModule>

<Files "version">
	Order allow,deny
	Deny from all
</Files>

# END -- Pluxml

# Redirect non-www urls to www
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.prestigeauto\.fr
RewriteRule (.*) http://www.prestigeauto.fr/$1 [R=301,L]


### REWRITE DE MES URL OCCASIONS
RewriteRule ^vehicules-occasions-jeep$ ^vehicules-occasions-la-rochelle/&m=JEEP [L,R=301]

### BLOCAGE DES MAUVAIS REFERRAL
RewriteCond %{HTTP_REFERER} ^http://(www\.)?semalt\.com.*$ [OR]
RewriteCond %{HTTP_REFERER} ^http://(www\.)?buttons-for-website\.com.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://(www\.)?make-money-online.7makemoneyonline\.com.*$ [NC]
RewriteRule .* - [F,L]

D'avance merci, si vous pouvez m'aider.

Réponses

  • PPmarcelPPmarcel Member
    février 2015 modifié
    Bonjour,

    Tu t'es trompé dans le sens de ta RewriteRule (c'est ORIGINE -> DESTINATION). Un petit slash en début de deuxième expression pourrait aussi être nécessaire, autrement il y a des chances que je DocumentRoot précède la nouvelle URL.
    Enfin, si tu mets un châpeau et un dollar dans l'expression finale, le serveur va les afficher sans les interprêter.
    RewriteRule ^vehicules-occasions-la-rochelle/&m=JEEP /vehicules-occasions-jeep [L,R=301]
    
  • Merci pour ton retour. Par contre je ne pense pas mettre trompé car j'ai repris des règles de réécritures présentes sur mon ancien site qui ne tournait pas sou pluxml et qui fonctionnaient.
    Je me suis peut-être mal exprimé.
    J'ai tout de même testé ta proposition, mais cela ne fonctionne pas.

    Actuellement, le site fonctionne avec cette adresse : http://www.prestigeauto.fr/vehicules-occasions-la-rochelle/&m=JEEP
    Mon idée est de pouvoir utiliser une URL de la forme : http://www.prestigeauto.fr/vehicules-occasions-jeep

    Il y a vraiment quelque chose qui bloque et je ne vois pas quoi. J'ai même testé cela :
    RewriteRule http://www.prestigeauto.fr/vehicules-occasions-jeep http://www.prestigeauto.fr/vehicules-occasions-la-rochelle/&m=JEEP [L]
    

    Sans succès. Pourtant cela devrait faire le job.

    Autre précision, mon .htaccess est bien à la racine du site.
  • StéphaneStéphane Member, Former PluXml Project Manager
    Essaye ceci

    # BEGIN -- Pluxml
    Options -Multiviews
    <IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteBase /
    RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
    RewriteRule (.*) http://%1/$1 [R=301,L]
    RewriteCond %{QUERY_STRING}  ^$
    RewriteRule http://www.prestigeauto.fr/vehicules-occasions-jeep http://www.prestigeauto.fr/vehicules-occasions-la-rochelle/&m=JEEP [R=301,NE,NC,L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-l
    # Réécriture des urls
    RewriteRule ^(?!feed)(.*)$ index.php?$1 [L]
    RewriteRule ^feed\/(.*)$ feed.php?$1 [L]
    </IfModule>
    <Files "version">
    	Order allow,deny
    	Deny from all
    </Files>
    # END -- Pluxml
    

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • En fait, j'ai réussi à faire fonctionner en partie ce que je souhaitais en mettant ma règle avant celles de PluXML.

    Voici la règle :
    RewriteRule ^vehicules-occasions-jeep /vehicules-occasions-la-rochelle/&m=JEEP [L,QSA]
    

    Bon il me reste à investiguer sur les tris additionnels que je n'arrive pas à faire fonctionner avec cette réécriture.

    En effet, j'aimerai vraiment que le lien suivant fasse le tri voulu :
    http://www.prestigeauto.fr/vehicules-occasions-jeep&c=prix&o=desc
    mais il ne se passe rien. J'ai testé plusieurs choses mais rien de probant pour le moment. Je tiendrai informé au cas où je trouve quelque chose.
  • PPmarcelPPmarcel Member
    février 2015 modifié
    D'accord, c'est plus clair. Alors si tu n'indiques pas le flag R=301 ou R=302, la redirection se passe "en interne" dans apache.
    Si tu rajoutes ces flags, la redirection est envoyé à ton navigateur, et elle sera jouée comme tu le veux.

    Donc la version corrigée qui devrait mieux marcher serait :
    RewriteRule ^vehicules-occasions-jeep /vehicules-occasions-la-rochelle/&m=JEEP [L,QSA,R=301]
    
  • Merci PPmarcel.

    Par contre, si je rajoute le flag R=301, je me retrouve avec l'ancienne adresse (vehicules-occasions-la-rochelle/&m=JEEP) dans le navigateur.

    Je n'ai pas bien compris l'utilité de ce flag, sachant que mon idée de réécriture est double : Rendre mes URL plus "jolies" et améliorer le référencement de mes pages. Si tu peux un peu plus m'éclairer.
  • Oui, le changement de l'URL dans la barre d'adresse, c'est le principe premier de la réécriture d'URL. :)

    Du coup je ne comprends plus ce que tu veux.

    Les URL http://www.prestigeauto.fr/vehicules-occasions-la-rochelle/&m=JEEP et http://www.prestigeauto.fr/vehicules-occasions-jeep fonctionnent sur le site. Soit.

    Du coup essayons de mettre à plat :

    1. quelle URL tu veux taper dans ton navigateur ?
    2. quelle URL souhaites-tu que le serveur te retourne ?
    3. quelle comportement tu obtiens actuellement ?

    Je vais t'aider autant que possible.

    Pour la culture, tu peux aussi lire la doc de apache sur la réécriture d'URL, c'est la référence en la matière : http://httpd.apache.org/docs/2.2/rewrite/intro.html
  • GonabGonab Member
    février 2015 modifié
    Merci pour ton aide PPmarcel.

    Effectivement, je ne dois pas être très clair dans mes explications.

    A la base le site fonctionne avec des adresse du style http://www.prestigeauto.fr/vehicules-occasions-la-rochelle/&m=JEEP où m=JEEP représente une variable utilisée dans la page pour traitement et renvoyer les annonces uniquement de cette marque.

    Mon souhait est de ne plus avoir cette variable de visible et de pouvoir utiliser une URL plus jolie et plus adaptée au référencement, donc : http://www.prestigeauto.fr/vehicules-occasions-jeep

    Pour le moment, cela fonctionne comme je le souhaite. Mon seul souci restant pour le moment, et que le script utilise d'autres variables pour trier les annonces. On retrouve cela sur les liens de tri en haut e mes annonces avec Prix, Année, Km. Et qu'avec ces tri je n'arrive pas à passer ces autres variables en utilisant la réécriture actuelles.

    Je cherche toujours un peu, même si ce n'est pas à plein temps. Je te remercie donc de ton aide.

    En fait, en y réfléchissant, une autre des solutions envisageables et peut-être plus simple, est de créer des pages statiques différentes pour chaque marque que je souhaite. Cela règlera mon problème même si c'est un peu moins fonctionnel pour d'éventuels MAJ futures.

    En espérant avoir été le plus clair, :)
  • Bon. Merci à tous pour votre aide, mais j'ai préféré opter pour la solution évoqué dans mon post précédent. J'ai créé de nouvelles pages statiques pour chacune de mes marques. J'ai le fonctionnement voulu maintenant.

    Je vais rajouter [RESOLU] au titre même si la solution n'implique plus l'URL REWRITING.
  • Jerry WhamJerry Wham Member
    février 2015 modifié
    Une série d'astuces sur le htaccess a été publiée sur github : https://github.com/phanan/htaccess
Connectez-vous ou Inscrivez-vous pour répondre.