URL Rewriting et conditions

WRInaute discret
je possede plusieurs domaines et je souhaite donner la possibilité a mes membres de creer leur propre album photo sur un le domaine qu'il choisiront.

par exemple, album1.domaine1.tld sera different de album1.domaine2.tld

et w*w.domaine2.tld et w*w.domaine3.tld doit renvoyer sur w*w.domaine1.tld

comme ca, tous les www renveront vers w*w.domaine1.tld et tous les sous domaines seront different.

Pour l'instant voici mon .htaccess :

Code:
RewriteEngine On
#si domaine1 ou domaine2 sans www
#je redirige vers w*w.domaine1.tld
RewriteCond %{HTTP_HOST} ^domaine1.tld$ [OR]
RewriteCond %{HTTP_HOST} ^domaine2.tld$ [OR]
RewriteRule ^(.*)   http://w*w.domaine1.tld/$1 [QSA,L,R=301]

#SI je suis sur le sous domaine www j'utilise ses regles
RewriteCond %{HTTP_HOST} w*w.domaine1.tld$
RewriteRule inscription.html index.php?page=site-inscription [QSA,L,R=301]

#sinon j'utilise celles pour les albums
RewriteCond %{HTTP_HOST} ^www.domaine1.tld$
RewriteRule album.html index.php?page=affiche_album [QSA,L,R=301]



Donc deja mon OR ne fonctionne pas

ensuite, comment dire que si je suis sur le sous domaine www ce sont tel regles d'url rewriting qui s'appliquent quelque soit le domaine et si, le sous domaine est different de www ce sont d'autres regles qui s'appliquent ?
 
WRInaute impliqué
Normalement, tes sous domaines doivent renvoyer à des dossiers de ton serveurs.
Après c´est un .htaccess dans les dossiers concernés avec les règles concernées.
 
WRInaute discret
actuellement, le sous domaine est le login du membre.

et apres, avec le login du membre, je fait correspondre un id qui me sert apres a aller chercher ses albums par exemple.
 
WRInaute occasionnel
waouh a dit:
Code:
RewriteEngine On
#si domaine1 ou domaine2 sans www
#je redirige vers w*w.domaine1.tld
RewriteCond %{HTTP_HOST} ^domaine1.tld$ [OR]
RewriteCond %{HTTP_HOST} ^domaine2.tld$ [OR] <-------- [b]PAS DE OR ICI[/b]
RewriteRule ^(.*)   http://w*w.domaine1.tld/$1 [QSA,L,R=301]

#SI je suis sur le sous domaine www j'utilise ses regles
RewriteCond %{HTTP_HOST} w*w.domaine1.tld$
RewriteRule inscription.html index.php?page=site-inscription [QSA,L,R=301]

#sinon j'utilise celles pour les albums
RewriteCond %{HTTP_HOST} ^w*w.domaine1.tld$
RewriteRule album.html index.php?page=affiche_album [QSA,L,R=301]

Donc deja mon OR ne fonctionne pas

ensuite, comment dire que si je suis sur le sous domaine www ce sont tel regles d'url rewriting qui s'appliquent quelque soit le domaine et si, le sous domaine est different de www ce sont d'autres regles qui s'appliquent ?

Le OR qui ne fonctionne pas, c'est normal, ton rewriterule fait partie de la liste des conditions OR, OR... faut virer le second [OR], au passage, mieux vaut prendre l'habitude de quoter le signe . avec un backslash et faire le test en NoCase pour que ça fonctionne aussi si quelqu'un entre un domaine avec des majuscules, ça donne donc ça :
Code:
#si domaine1 ou domaine2 sans www
#je redirige vers w*w.domaine1.tld
RewriteCond %{HTTP_HOST} ^domaine1\.tld$ [NC,OR]
RewriteCond %{HTTP_HOST} ^domaine2\.tld$ [NC]
RewriteRule ^(.*)   http://w*w.domaine1.tld/$1 [QSA,L,R=301]

#SI je suis sur le sous domaine www j'utilise ses regles
RewriteCond %{HTTP_HOST} ^w*w\.domaine1\.tld$ [NC]
RewriteRule inscription.html index.php?page=site-inscription [QSA,L,R=301]

Pour le reste, j'ai pas bien compris ce que tu voulais faire avec tes noms de domaine et tes albums, si tu files quelques exemples, je verrais pour répondre à cette partie-là.
 
WRInaute discret
voila, je viens de tester

Code:
#si domaine1 ou domaine2 sans www
#je redirige vers www.domaine1.tld
#RewriteCond %{HTTP_HOST} ^domaine1\.org$ [NC,OR]
#RewriteCond %{HTTP_HOST} ^domaine2\.com$ [NC]
#RewriteRule ^(.*)   http://w*w.domaine1.tld/$1 [QSA,L,R=301]


#SI je suis sur le sous domaine www j'utilise ses regles
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.domaine1\.tld$ [NC]
RewriteRule inscription.html index.php?page=site-inscription

Ca, ca fonctionne mais il faut que je supprime [QSA,L,R=301] sur la derniere ligne.

Maintenant, j'aimerais que si le sous domaine est www quelque soit le nom de domaine, j'utilise un groupe de regles ce qui semble fonctionner pour :
Code:
#SI je suis sur le sous domaine www j'utilise ses regles
RewriteEngine On
RewriteCond %{HTTP_HOST} ^w*w\.domaine1\.tld$ [NC]
RewriteRule inscription.html index.php?page=site-inscription
la regle RewriteRule inscription.html index.php?page=site-inscription ne fonctionne que si l'url est w*w.domaine1.tld

maintenant, je voudrais utiliser d'autres regles quand l'url n'est pas www.domaine1.tld
 
WRInaute occasionnel
waouh a dit:
maintenant, je voudrais utiliser d'autres regles quand l'url n'est pas www.domaine1.tld

Tu peux faire un
RewriteCond %{HTTP_HOST} !^w*w\.domaine1\.tld$ [NC]

puis placer ta règle après.



quant au [QSA,L,R=301]
Je ne vois pas pourquoi ça marche sans et pas avec... Tu veux pas essayer avec juste [QSA], juste [L] et juste [R=301] voir lequel fait que ça ne fonctionne pas ?
 
WRInaute discret
ahh ca à l'air de bien fonctionner :d

et visiblement c'est à cause de la redirection 301 que ca deconne.

Ca me rajoute le chemin /home/web/...... dans l'url en fait
 
WRInaute discret
une petite question en plus.

Si je veux que :

Code:
http://domaine1.tld/images/domaine1/sous-domaine/image1.jpg

donne

Code:
http://sous-domaine.domaine1.tld/image1.jpg

et que :

Code:
http://domaine2.tld/images/domaine2/sous-domaine/image1.jpg

donne

Code:
http://sous-domaine.domaine2.tld/image1.jpg

comment je peux faire ?
 
WRInaute occasionnel
Tu peux faire :
Code:
RewriteCond %{HTTP_HOST} ^(domaine\d)\.tld$
RewriteRule ^images/domaine\d/([^/]+)/([^/]+)$ http://$1.%1.tld/$2 [R=302]
 
WRInaute discret
vraiment merci pour ton aide car je serais incapable de faire ca.

je viens de tester ca:

http://test.exemple.com/image.jpg

qui est accessible par http://exemple.com/images/exemple/test/image.jpg

mais ca ne fonctionne pas dailleur, d'apres ce que je comprend dans ta regle, je dois specifier l'extention du domaine :

Code:
RewriteRule ^images/domaine\d/([^/]+)/([^/]+)$ http://$1.%1.tld/$2 [R=302]

seulement les domaines peuvent etres totalement different l'un exemple.com et l'autre bidule.org
 
WRInaute occasionnel
Ah ok, pardon, j'ai cru comprendre que domainex c'était le vrai nom et que le .com serait toujours présent (.tld dans l'exemple qu'on a pris)

Essaye plutot ça alors :
Code:
RewriteCond %{HTTP_HOST} ^([^\.]+\..+)$
RewriteRule ^images/[^/]+/([^/]+)/([^/]+)$ http://$1.%1/$2 [R=302]

ça remplacera h*tp://machin.com/images/machin/test/image.jpg
par
h*tp://test.machin.com/image.jpg

par contre, ça ne fera rien si le domaine de l'url a déjà 3 composants (toto.tata.com)

(mais ça aura le même résultat pour pour
h*tp://machin.com/images/machin/test/image.jpg
h*tp://machin.com/images/toto/test/image.jpg
et h*tp://machin.com/images/pwetpwetlamouche/test/image.jpg
)
c'est pour ça que je suis pas sur de comprendre... N'hésite pas à expliquer un peu mieux le principe du nom du répertoire placé juste après /images/
 
Discussions similaires
Haut