Reecriture de sous domaines dynamique avec variables

Nouveau WRInaute
La gestion des sous domaines dynamiques à été activé sur mon serveur dédié OVh (modification : etc/named.conf et usr/local/apache/conf/httpd.conf ).
Je chercher a effectuer des reecriture pour des sous domaines dynamques ( ex : categorie-jouet.monsite.com qui appel la page cat-detail.php?lacat=jouet ).

J'ai deja trouvé une première ébauche qui me permet de faire ca :

categorie-jouet.monsite.com -> monsite.com/test.php?lacat=jouet

avec ceci :

Code:
RewriteCond   %{HTTP_HOST}   !^www\.monsite\.com$ [NC] 
RewriteCond   %{HTTP_HOST}    ^categorie-([a-z0-9_-]+)\.monsite\.com$ [NC] 
RewriteRule   ^(.*)                     detail.php?lacat=%1 [NC,L]


Par contre est il possible a votre avis d'éffectuer cette reecriture avec deux ou plusieurs variables ?
car j'aimerais également faire une reecriture d'url de ce type en plus de la première présentée ci dessus :

exemple :

categorie-jouet.monsite.com/page-19.html -> monsite.com/test.php?lacat=jouet&lapage=19



Merci par avance.

Julien
 
WRInaute accro
Je ne vois pas pourquoi tu parles de sous domaines dynamiques... tu les a creer manuellement si je ne me trompe pas?

Pour la reecriture, il te faut prendre l'ensemble de la chaine et capturer le contenu de la variable "lapage"

Code:
RewriteCond   %{HTTP_HOST}   !^www\.monsite\.com$ [NC]
RewriteCond   %{HTTP_HOST}    ^categorie-([a-z0-9_\-]+)\.monsite\.com$ [NC]
RewriteRule   page-([0-9]+)\.html  test.php?lacat=%1&lapage=$1 [QSA,NC,L]
 
Nouveau WRInaute
Super KOogar ca marche !
Par contre j'arrive bien a recupéré les deux variables mais si j 'en ai besoin juste d'une
cela ne fonctionne plus.

Je m'explique pour la première page j'ai pas besoin de recupéré la variable page donc
je veux faire :
categorie-jouet.monsite.com -> test.php?lacat=jouet
et si je declare la variable page dans l'url :
categorie-jouet.monsite.com/page-4.html -> test.php?lacat=jouet&lapage=4

J'ai essayé de déclarer deux fois les conditions :

Code:
RewriteCond   %{HTTP_HOST}   !^www\.monsite\.com$ [NC] 
RewriteCond   %{HTTP_HOST}    ^categorie-([a-z0-9_\-]+)\.monsite\.com$ [NC] 
RewriteRule   page-([0-9]+)\.html  test.php?lacat=%1&lapage=$1 [QSA,NC,L]

RewriteCond   %{HTTP_HOST}   !^www\.monsite\.com$ [NC] 
RewriteCond   %{HTTP_HOST}    ^categorie-([a-z0-9_\-]+)\.monsite\.com$ [NC] 
RewriteRule   ^(.*)           test.php?lacat=%1 [NC,L]

Masi cela ne fonctionne pas, a chaque fois il zappr une des deux variables,
est il possible de déclarer des conditions différentes en fonction de si on
utlise la variable page ou pas ?

Merci :roll:
Julien
 
WRInaute accro
repasse le dernier block en premier et test l'uri. Elle doit etre vide.
^/$ : Ne contient que le caratere /
au cas ou ton serveur ne renvoi pas le caractere /, test aussi cette syntaxe :
^$ : Ne contient aucun caractere

Code:
RewriteCond %{REQUEST_URI} ^/$
RewriteRule   ^(.*)   test.php?lacat=%1 [NC,L]
 
Nouveau WRInaute
Merci Koogar,

Donc il faudrait faire ceci, pour obtenir les deux cas que j'ai cité précédémment , car en faisant ceci j'obtiens une page blanche sur mon serveur ? :

Code:
RewriteCond %{REQUEST_URI} ^/$ 
RewriteRule   ^(.*)   test.php?lacat=%1 [NC,L] 

RewriteCond   %{HTTP_HOST}   !^www\.monsite\.com$ [NC] 
RewriteCond   %{HTTP_HOST}    ^categorie-([a-z0-9_\-]+)\.monsite\.com$ [NC] 
RewriteRule   page-([0-9]+)\.html  test.php?lacat=%1&lapage=$1 [QSA,NC,L]

Merci Julien[/code]
 
WRInaute accro
:D ..pour la page blanche

Si tu enleves les autres condtions cela ne va pas marcher, il faut les garder et tester si l'uri est vide ou non.

Code:
RewriteCond   %{HTTP_HOST}   !^www\.monsite\.com$ [NC]
RewriteCond   %{REQUEST_URI} ^/$
RewriteCond   %{HTTP_HOST}    ^categorie-([a-z0-9_\-]+)\.monsite\.com$ [NC]
RewriteRule   ^(.*)           test.php?lacat=%1 [NC,L]


RewriteCond   %{HTTP_HOST}   !^www\.monsite\.com$ [NC]
RewriteCond   %{HTTP_HOST}    ^categorie-([a-z0-9_\-]+)\.monsite\.com$ [NC]
RewriteRule   page-([0-9]+)\.html  test.php?lacat=%1&lapage=$1 [QSA,NC,L]
 
WRInaute impliqué
Oui je sais c'est vieux comme topic mais j'ai un problème très très proche :
J'ai les mêmes besoins (ou presque que l'auteur de ce message ... mais je parle encore moins le .haccess que le Russe)
Code:
RewriteCond   %{HTTP_HOST}   !^www\.example\.com$ [NC]
RewriteCond   %{REQUEST_URI} ^/$
RewriteCond   %{HTTP_HOST}    ^([a-z0-9_\-]+)\.example\.com$ [NC]
RewriteRule   ^(.*)           %1 [NC,L]
avec ça j'ai bien test.example.com qui pointe sur example.com/test : nickel

Mais avec ça
Code:
RewriteCond   %{HTTP_HOST}   !^www\.example\.com$ [NC]
RewriteCond   %{HTTP_HOST}    ^([a-z0-9_\-]+)\.example\.com$ [NC]
RewriteRule  ([a-z0-9_\-]+)      %1/$1 [QSA,NC,L]

je n'arrive pas à faire pointer
test.example.com/news/coucou (remarquez que peux ne pas avoir d'extension ni de nom de fichier)
sur example.com/test/news/coucou

J'avoue que je suis un peu perdu, et que j'ai fois en WRI ;)

Merci d'avance
 
WRInaute impliqué
Code:
RewriteEngine On

RewriteCond   %{HTTP_HOST}   !^www\.example\.com$ [NC]
RewriteCond   %{REQUEST_URI} ^/$
RewriteCond   %{HTTP_HOST}    ^([a-z0-9_\-]+)\. example\.com$ [NC]
RewriteRule   ^(.*)           %1 [NC,L]

RewriteCond   %{HTTP_HOST}   !^www\. example\.com$ [NC]
RewriteCond   %{HTTP_HOST}    ^([a-z0-9_\-]+)\. example\.com$ [NC]
RewriteRule   (.*)    %1/$1 [QSA,NC,L]

D'après ce que j'ai pu lire cela devrait marcher ... mais j'ai une "Internal Server Error"...
Une piste ?
 
WRInaute accro
screuscreu a dit:
D'après ce que j'ai pu lire cela devrait marcher ... mais j'ai une "Internal Server Error"...
Une piste ?

tu as raison de dire qu'en théorie ca doit fonctionner. le QSA ne sert a rien donc enleve le, et re essaye en forcant la redirection avec le flag [R]

Code:
RewriteCond   %{HTTP_HOST}    ^([a-z0-9_-]+)\.example\.com$ [NC]
RewriteRule  ^(.*)$   http://www.example.com/%1/$1 [R,L]

quand le tiret (-) est placé a la fin de la classe, il redevient naturellement un simple caractere
[a-z0-9_-] est valide, le tiret sera pris en compte
 
Discussions similaires
Haut