Ma redirection ne fonctionne que sur un niveau

Nouveau WRInaute
Bonjour,

j'ai mis en place une redirection non-www vers www mais elle ne fonctionne pas sur un dossier de mon site.
voici l'arbo de mon site:

Code:
/ (racine)
|_ dossier1/
    |_ htaccess1
|_ htaccess2

htaccess1 contient:

Code:
RewriteRule ^([a-zA-Z0-9-]*)\-([0-9]+)\.html(.*)$ article.php?id=$2 [L,E]

htaccess2 contient:

Code:
# Follow symbolic links in this directory.
Options +FollowSymLinks

RewriteCond %{HTTP_HOST} ^monsite\.com$
RewriteRule ^(.*)$ http://www.monsite.com/$1 [L,R=301]

En enlevant htaccess1 la redirection marche bien dans dossier1 mais du coup je n'ai plus la réécriture des url.
 
WRInaute passionné
essaye d'ajouter dans le htacess1 :
Code:
RewriteOptions Inherit
sinon il faut remonter le contenu du htaccess 1 à la racine.
 
Nouveau WRInaute
bonjour,

j'ai essayé mais ça ne marche pas, la réécriture des url saute.

j'ai essayé de mettre la réécriture des url dans htaccess2 mais j'ai un peu de mal :

Code:
RewriteRule ^/dossier1/([a-zA-Z0-9-]*)\-([0-9]+)\.html(.*)$ /dossier1/article.php?id=$2 [L,E]
 
WRInaute passionné
il y a un / de trop. Les premières parenthèses sont inutiles puisque tu n'utilises pas le $1. Le - n'est pas un caractère spécial, l'antislash avant ne sert a rien
Code:
RewriteRule ^dossier1/[a-zA-Z0-9-]*-([0-9]+)\.html(.*)$ /dossier1/article.php?id=$1 [L,E]
 
Nouveau WRInaute
Bonjour,
Pour ma part j'ai mis le code suivant dans le htaccess à la racine de mon site :
Code:
RewriteCond %{HTTP_HOST} ^monsite.com$
RewriteRule ^(.*) http://www.monsite.com/$1  [QSA,L,R=301]
Je suis plûtot débutant en réécriture d'url donc je suis incapable de dire si la règle contenue dans ton htaccess1 ne rentre pas en conflit avec celle de htaccess2. Peut être que le $ après ^(.*) n'est pas nécessaire. Apparement l'option QSA permet d'ajouter QUERY_STRING (les variables GET) à la fin de l'adresse.
Enfin à noter que ^monsite.com$ s'applique uniquement aux adresses dont le domaine est exactement monsite.com. Si tu veux l'appliquer à tous tes sous domaines, il me semble qu'il faudrait plutôt utiliser !^www.monsite.com$ qui veut dire que la règle s'applique à tout domaine différent de http://www.monsite.com (car ! est une négation). Ou encore ^(toto|tutu|tata).monsite.com$ pour l'appliquer au sous domaine toto ou tutu ou tata.

En espérent que cela t'aide... Cordialement.

[EDIT] Je n'ai pas bien compris la notion pour l'option [L] qui normalement veux dire que le serveur réécrit l'url qu'une seule fois ??? Peut être qu'elle empêche la réécriture par ton htaccess1 ???
Tu dois aussi pouvoir mettre toutes tes régles dans le htaccess2 à la racine de ton site en utilisant la condition suivante pour que ta règle de réécriture ne s'applique qu'aux fichiers du dossier1 :
Code:
RewriteCond %{REQUEST_URI} ^/dossier1
 
Discussions similaires
Haut