Aller au contenu

Sujets conseillés

Posté

Bonjour

Je n'arrive pas à faire mon test.

Je souhaite vérifier que l'URL demandée est bien de la forme : www.domaine.com/sousdom/xxxxxx.html

Comment tester que "sousdom" est bien présent et fait partie d'une liste de valeurs ? :unsure:

Mes essais avec Rewritecond ne sont pas concluants.

Merci

Posté

Hello

Merci de la réponse mais ça ne fonctionne pas...

EN fait je dois vérifier qu'une adresse contient bien fr ou gb comme sous-dossier.

Si on a l'adresse www.domaine.com/page.html je voudrais rediriger vers www.domaine.com/fr/page.html :unsure:

Posté


RewriteCond %{HTTP_HOST} ^www\.domaine\.com
RewriteCond %{REQUEST_URI} !^/(fr|en)
RewriteRule ^(.*)$ /fr/$1 [L]

Ca doit être ça, par contre, fais gaffe à ta base '/' ou '', ne copie pas mes règles sans tenir compte de ta conf :)

Posté

Oui ça semble mieux...

Le problème est que le "page.html" passe aussi par une ré-écriture (un genre de *.html => index.php?page=*) et que ça se marche dessus...

Je me retrouve avec www.domaine.com/fr/index.php et que évidemment ça ne fonctionne pas :wacko:

Il faudrait que la règle ajoute juste le /fr/ avant que ça ré-écrive (pourtant le "L" indique bien qu'il faut stopper ?)

Posté

Dans la mesure où tu souhaites que plusieurs règles s'appliquent, il va falloir que tu jongles un peu avec ces flags.

NB : S'agissant manifestement d'un choix de langue, je pense aussi que ta redirection n'a rien à faire dans un htaccess mais aurait plus sa place dans un contrôleur.

Posté

NB : S'agissant manifestement d'un choix de langue, je pense aussi que ta redirection n'a rien à faire dans un htaccess mais aurait plus sa place dans un contrôleur.

Un quoi ?

La redirection est temporaire. L'ajout de la 2ème langue vient de se faire donc je souhaite rediriger les pages sans l'indication de langue vers la VF (ça fonctionne mieux ensuite)

Posté


RewriteCond %{REQUEST_URI} !^/(fr|en)
RewriteRule ^(.*)$ /fr/$1

En début de fichier et sans le flag afin que le parcours de tes règles continue je dirai sans avoir essayé.

Posté

Bon c'est toujours pas ça...

Il y a cafouillage au niveau des redirections...

Voilà ce que contient le fichier :


RewriteCond %{REQUEST_URI} !^/(fr|gb)/ [NC]
RewriteRule ^(.*)$ /fr/$1 [R=301]

RewriteRule ^([fr|gb]*)/(.*)\.html$ /index.php?p=$2&lg=$1 [QSA,L]

Donc normalement domaine.com/mapage.html doit renvoyer vers domaine.com/fr/mapage.html qui renvoie vers domaine.com/index.php?p=mapage&lg=fr ??

Posté (modifié)

Lors d'une redirection avec entête 301 , la règle est de mettre l'URL complète (http://....)

Ensuite, je te suggère de modifier tes règles comme ceci :

RewriteRule ^/?(.*)$ http://ledomaine.tld/fr/$1 [R=301,L]

(comme c'est une redirection externe, le L est implicite...)

et

RewriteRule ^/?(fr|gb)/(.*)\.html$ /index.php?p=$2&lg=$1 [QSA,L]

Tu ne peux jamais être certain que le / sera (ou ne sera pas) transmis à mod_rewrite.

Là au moins cela devrait fonctionner partout.

De plus, un choix de texte s'écrit (texte1|texte2) et non [texte1|texte2]

Modifié par Dan
Modifié là seconde règle, pour la simplifier
Posté

Merci Dan pour les précisions et la correction / c'est déjà ça de fait.

Évidemment ça n'avance pas ma choucroute à savoir que :


RewriteCond %{REQUEST_URI} !^/(fr|gb)/ [NC]
RewriteRule ^/?(.*)$ /fr/$1 [QSA]

RewriteRule ^/?(fr|gb)/(.*)\.html$ /index.php?p=$2&lg=$1 [QSA,L]

En fait c'est la deuxième règle qui ne fonctionne pas, le $2 est perdu, il ne récupère pas les paramètres passés à l'origine...

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...