Aller au contenu

Test de l'adresse - sous-répertoire


Sujets conseillés

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

Lien vers le commentaire
Partager sur d’autres sites

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:

Lien vers le commentaire
Partager sur d’autres sites


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 :)

Lien vers le commentaire
Partager sur d’autres sites

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 ?)

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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)

Lien vers le commentaire
Partager sur d’autres sites

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 ??

Lien vers le commentaire
Partager sur d’autres sites

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
Lien vers le commentaire
Partager sur d’autres sites

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...

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

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



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