probleme avec ^ (ciblage?)

Nouveau WRInaute
Salut !
j'ai un changement de nom de variable (idiome devient lg) pour un seul fichier index.php
j'écris :
Code:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^idiome=es$
RewriteRule ^/?index\.php$ /index.php?lg=es [L,R=301]

le problème, c'est que bien sûr ça ne fonctionne pas !!

si au lieu de ^/?index\.php$ j'écris simplement index\.php ou encore ^(.*)index\.php$ ça marche...

ok, très bien... mais pourquoi je ne pourrais pas utiliser ^ ?
quelqu'un à t-il une explications ?
 
WRInaute passionné
si index.php se trouve à la racine du site il faut mettre
Code:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^idiome=es$
RewriteRule ^index\.php$ /index.php?lg=es [L,R=301]
si index.php se trouve dans un répertoire il faut mettre
Code:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^idiome=es$
RewriteRule ^(.*/)index\.php$ /$1index.php?lg=es [L,R=301]
 
Nouveau WRInaute
^index\.php$ ne fonctionne pas à la racine. index\.php$ fonctionne.

et je n'arrive plus rien à faire fonctionner dans le .htaccess de mon dossier.... ni
^(.*/)index\.php$ ni ^(.*)index\.php$ ni même index\.php$ ?????
 
WRInaute passionné
je suis parti du principe que le .htaccess est à la racine.
Si c'est pas le cas, la partie gauche est relative au répertoire (ne commence pas par /) et la partie droite est relative à la racine du site (commence par /)
 
WRInaute impliqué
D'abord, tu peux regarder ce qu'il y a dans ton URL, par exemple en faisant:

RewriteEngine On
RewriteCond %{QUERY_STRING} ^idiome=es$
RewriteRule ^(.*)index\.php$ /index.php?lg=es&PREFIX=$1 [L,R=301]

Tu imprime la valuer de PREFIX dans ta page.

Sinon, je pense qu'il faut que tu utilise
Code:
RewriteBase /
.
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut