.htaccess fonctionnant à moitié

Consultez la formation URL Rewriting et sites dynamiques de WebRankInfo / Ranking Metrics


weedo
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 44
Inscription: 16 Jan 2008

.htaccess fonctionnant à moitié

Message le Lun Fév 25, 2008 10:30

Bonjour à tous,

Je rencontre un soucis avec un .htaccess, il fonctionne à moitié :( Ce que je souhaite faire c'est réécrire l'adresse des pages de résultat de recherche. J'ai donc mon fichier index.php qui fait appel à la variable search index.php?search= et j'aimerais réécrire tout ça sous la forme index/file-$valeurdesearch.html

Voici mon code
Code: Tout sélectionner
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www.mon-site.fr$
RewriteRule ^(.*) http://www.mon-site.fr/$1 [QSA,L,R=301]
RewriteRule ^index/file-([0-9a-zA-Z-]+)\.html$ http://www.mon-site.fr/index.php?search=$1


Voyez vous d'où cela peut venir ?

Quand je dis qu'il fonctionne à moitié c'est parceque les 3 premières lignes (qui servent à éviter que l'adresse du site soit affiché sans les www) fonctionnent impec...

Merci d'avance pour votre aide.

Vap
WRInaute passionné
WRInaute passionné
 
Messages: 1090
Inscription: 17 Juin 2007

Message le Lun Fév 25, 2008 10:37

Essaie d'enlever le ^ au début (ou alors met RewriteBase /) :

Code: Tout sélectionner
RewriteRule index/file-([0-9a-zA-Z-]+)\.html$ http://www.mon-site.fr/index.php?search=$1


weedo
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 44
Inscription: 16 Jan 2008

Message le Lun Fév 25, 2008 10:47

Merci pour ta réponse !

ça ne fonctionne toujours pas.. :x
J'ai testé avec
Code: Tout sélectionner
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} !^www.mon-site.fr$
RewriteRule ^(.*) http://www.mon-site.fr/$1 [QSA,L,R=301]
RewriteRule ^index/file-([0-9a-zA-Z-]+)\.html$ http://www.mon-site.fr/index.php?search=$1

et avec
Code: Tout sélectionner
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} !^www.mon-site.fr$
RewriteRule ^(.*) http://www.mon-site.fr/$1 [QSA,L,R=301]
RewriteRule index/file-([0-9a-zA-Z-]+)\.html$ http://www.mon-site.fr/index.php?search=$1


Une autre idée ?
(Qu'est ce que ça peut être capricieux ces .htaccess...)


Seraph
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 405
Inscription: 2 Avr 2006

Message le Lun Fév 25, 2008 11:05

Essaye avec un / devant index. :)

jeroen
WRInaute passionné
WRInaute passionné
 
Messages: 2461
Inscription: 30 Aoû 2002

Message le Lun Fév 25, 2008 11:07

Quelle est le problème ou l'erreur rencontrée ?

essaie ça :
Code: Tout sélectionner
RewriteRule ^index/file-([0-9a-zA-Z-]+)\.html$ index.php?search=$1


bgdc
WRInaute impliqué
WRInaute impliqué
 
Messages: 723
Inscription: 23 Mai 2005

Message le Lun Fév 25, 2008 11:08

Quand tu dis que ca ne marche pas, il se passe quoi ? une erreur ?


weedo
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 44
Inscription: 16 Jan 2008

Message le Lun Fév 25, 2008 11:24

Quand je dis que ça ne fonctionne pas c'est que ça fonctionne à moitié (cf 1°mess) et je n'ai pas d'erreur... à la limite je préfèrerai en avoir une mais la rien... l'adresse s'écrit encore et toujours www.mon-site.fr/index.php?search=requete :(

J'ai testé avec le / devant index soit

Code: Tout sélectionner
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} !^www.mon-site.fr$
RewriteRule ^(.*) http://www.mon-site.fr/$1 [QSA,L,R=301]
RewriteRule ^/index/file-([0-9a-zA-Z-]+)\.html$ http://www.mon-site.fr/index.php?search=$1

Kifkif...

et avec
Code: Tout sélectionner
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} !^www.mon-site.fr$
RewriteRule ^(.*) http://www.mon-site.fr/$1 [QSA,L,R=301]
RewriteRule ^/index/file-([0-9a-zA-Z-]+)\.html$ index.php?search=$1

et re-kifkif :cry:
Dernière édition par weedo le Lun Fév 25, 2008 11:29, édité 1 fois.

Vap
WRInaute passionné
WRInaute passionné
 
Messages: 1090
Inscription: 17 Juin 2007

Message le Lun Fév 25, 2008 11:28

weedo a écrit:Quand je dis que ça ne fonctionne pas c'est que ça fonctionne à moitié (cf 1°mess) et je n'ai pas d'erreur... à la limite je préfèrerai en avoir une mais la rien... l'adresse s'écrit encore et toujours www.mon-site.fr/index.php.search=requete :(


C'est normal! Tu as parlé de récriture, pas de redirection...

Ajoute [L,R=301] a la fin de la dernière règle, et dis nous quelle variante(s) marche(nt).


weedo
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 44
Inscription: 16 Jan 2008

Message le Lun Fév 25, 2008 11:39

Je pensais que dans la mesure ou j'aimerais réécrire une adresse du type index.php?search=requete il s'agissait d'url rewriting, car les fichiers index/file-$requete.html n'existent pas... J'ai essayé de rajouter le [L,R=301] ça ne change rien (toutes soluces confondues)... C'est quand même fou ! d'autant que si les premières lignes servant à éviter la disparition des www fonctionnent, c'est bien que le mod_rewrite est activé. Bref, j'y comprend plus grand chose

jeroen
WRInaute passionné
WRInaute passionné
 
Messages: 2461
Inscription: 30 Aoû 2002

Message le Lun Fév 25, 2008 12:02

As tu essayé ma solution ?
Ton .htaccess est bien à la racine de ton site ?

capleton59
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 302
Inscription: 24 Avr 2005

Message le Lun Fév 25, 2008 12:10

et si tu tapes ton adresse "réécrite" directement dans la basse d'adresse ca donne quoi ??


weedo
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 44
Inscription: 16 Jan 2008

Message le Lun Fév 25, 2008 12:54

jeroen a écrit:As tu essayé ma solution ?
Ton .htaccess est bien à la racine de ton site ?


Oui j'ai testé ta solution et ça ne foncitonne pas, le .htaccess est bien à la racine du site...

et si tu tapes ton adresse "réécrite" directement dans la basse d'adresse ca donne quoi ??


Et bien curieusement ça fonctionne, j'entend par la que je tombe sur la même page qu'avec l'url originale.

Mon code :
Code: Tout sélectionner
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} !^www.mon-site.fr$
RewriteRule ^(.*) http://www.mon-site.fr/$1 [QSA,L,R=301]
RewriteRule ^index-([0-9a-zA-Z-]+)-([0-9a-zA-Z-]+)\.html$ index.php?$1=$2


Donc pour résumer je tappe la requête test : index.php?search=test j'ai donc ma page de résultats.
Et quand je tape index-search-test.html je tombe sur la même page...

Comment faire pour que quand j'entre "test" dans le formulaire la réécriture fonctionne comme elle devrait... et donc m'afficher dans la barre d'adresse http://www.mon-site.fr/index-search-test.html au lieu de http://www.mon-site.fr/index.php?search=test

Merci beaucoup pour votre aide :)

jeroen
WRInaute passionné
WRInaute passionné
 
Messages: 2461
Inscription: 30 Aoû 2002

Message le Lun Fév 25, 2008 13:09

on y est : encore un qui n'a pas compris....
Ta réécriture marche donc, puisque quand tu appelle l'url index-search-test.html ton serveur te renvoie bien l'URL index.php?search=test

Le problème est ailleurs : tu voudrais qu'à la soumission du formulaire ce soit la page index-search-test.html qui soit demandée.

Deux solutions !
1/ Via javascript
2/ Via un test du REQUEST_URI + redirection 301 dans le .htaccess ou dans la page cible du formulaire.

http://www.google.fr/search?q=rewritecond+request_uri


webmasterlamogere
WRInaute passionné
WRInaute passionné
 
Messages: 1874
Inscription: 17 Déc 2006

Message le Lun Fév 25, 2008 15:38

et avec ca :
Code: Tout sélectionner
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www.mon-site.fr$
RewriteRule ^(.*) http://www.mon-site.fr/$1 [QSA,L,R=301]
RewriteCond %{QUERY_STRING} ^search=([^&]+)$
RewriteRule ^ index\.php$ /index/file-%1.html? [R=301,L]
RewriteRule ^index/file-([0-9a-zA-Z-]+)\.html$ /index.php?search=$2&stop

capleton59
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 302
Inscription: 24 Avr 2005

Message le Lun Fév 25, 2008 17:29

jeroen a écrit:on y est : encore un qui n'a pas compris....
Ta réécriture marche donc, puisque quand tu appelle l'url index-search-test.html ton serveur te renvoie bien l'URL index.php?search=test

Le problème est ailleurs : tu voudrais qu'à la soumission du formulaire ce soit la page index-search-test.html qui soit demandée.

D


c'est bien pour ça que j'avais posé ma question ;)

c'est un probleme de réécriture mais en interne, dans le script php

.htaccess fonctionnant à moitié

Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Formation recommandée sur ce thème :

Formation URL Rewriting et sites dynamiques : apprenez comment mettre en place la réécriture d'URL, comment optimiser vos URL et profiter de vos pages dynamiques pour booster votre référencement. Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité