[Résolu] Se passer de redirections (ou un code plus propre)

WRInaute discret
Bonjour à tous,
Voila, j'ai changé de serveur web hier et j'ai un problème que j'ai dû régler à la barbare car le nouveau serveur n'acceptait pas ma précédente configuration...
Le but de mon rewriting est de prendre les sous-domaines pour créer des sites web indépendants le tout dynamiquement.
Tout fonctionne bien dans la configuration actuelle mais le problème est que ça fait une redirection 301 et donc, pour la SEO, pour la visibilité et pour le nombre de requetes passées au serveur, c'est pas terrible :)
En fait ce que j'aimerais faire c'est que quand un visiteur entre l'adresse http://subdom.domain.com/accueil.html , ça réécrive le chemin pour http://www.domain.com/online/index.php? ... cueil.html
Dans l'état actuel des choses, ça redirige le visiteur vers http://www.domain.com/online/subdomain/accueil.html ... (donc cette url-là est visible dans le navigateur).
Et pour courronner le tout, le code n'est pas des plus propres puisque c'est une succession de rustines de patches en fonction de la redirection barbare que j'ai fait...
Je serais vraiment très reconnaissant si vous pouviez m'aider un petit peu ;)

Merci de votre aide, voici le htaccess que j'utilise :

Code:
Options +FollowSymlinks
RewriteEngine on
# Si le domaine est http://domain.com , redirige vers http://www.domain.com 
RewriteCond %{HTTP_HOST} ^domain.com$
RewriteRule ^(.*)   http://www.domain.com$1  [QSA,L,R]

# Extrait le sous-domaine si différent de "www" et redirige vers le path réel
RewriteCond %{HTTP_HOST} !^www.domain.com [NC]
RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com [NC]
RewriteRule (.*) http://www.domain.com/online/%1/$1 [L,R=301]

# Diverses réécritures à effectuer après la redirection
RewriteRule ^online/([0-9a-zA-Z\-_]+)/news.rss$  /online/rss.php?id=$1  [L]
RewriteRule ^online/([0-9a-zA-Z\-_]+)/?$  /online/index.php?id=$1&page=  [L]
RewriteRule ^online/([0-9a-zA-Z\-_]+)/news-(.+).phtml$  /online/index.php?id=$1&page=news.phtml&news_lire=$2  [L]
RewriteRule ^online/([0-9a-zA-Z\-_]+)/(.*).phtml$  /online/index.php?id=$1&page=$2.phtml  [L]
RewriteRule ^online/([0-9a-zA-Z\-_]+)/(.*).html$  /online/index.php?id=$1&page=$2.html  [L]
 
WRInaute accro
Code:
# Extrait le sous-domaine si différent de "www" et redirige vers le path réel 
RewriteCond %{HTTP_HOST} !^www.domain.com [NC] 
RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com [NC] 
RewriteRule (.*) http://www.domain.com/online/index.php?id=%1$page=$1 [L,R=301]
 
WRInaute discret
Merci d'avoir répondu, je me suis peut-être mal exprimé, et je m'en excuse car ce n'est pas ce que je veux ;)
Je voudrais arriver à me passer de la redirection et donc que dans le navigateur du visiteur soit affiché http://subdom.domain.com/accueil.html alors que ça fait appel à la page http://www.domain.com/online/subdom/accueil.html (toujours en tenant compte des multiples possibilités qui sont celles en-dessous du code que tu as cité et modifié)...

Merci par avance ;)
 
WRInaute accro
pas de solution.

C'est le navigateur qui fait la demande de la page au serveur. Il envoi 1 adresse et le serveur lui renvoi la page.

deplace tes fichiers...
 
WRInaute accro
plus ca avance, plus je m'emele avec ton probleme. Maintenant ce que je comprend, c'est que tu as demenagé ton site et que ce qui marchais chez l'un ne marche plus chez l'autre ?
 
WRInaute discret
Oui je suppose que c'est parce que je suis passé d'apache 1.3 à apache 2.0, de l'eau a coulé sous les ponts entre les deux versions (surtout que la 1.3 n'était pas tenue à jour sur l'ancien serveur) et j'avais trouvé la solution du P,L un peu par hasard en essayant plein de trucs ^^

Comme mon problème n'est pas très simple à comprendre, je vais tenter de le réexpliquer à fond...

Donc j'ai un site (mon www) qui permet aux membres de créer leur propre site.
Avant mon déménagement de serveur, j'utilisais le même htaccess avec la petite nuance que je t'ai donnée.
Depuis mon déménagement, cette astuce ne fonctionne plus donc au lieu d'avoir des sous-domaines en dur, je me retrouve avec des redirections...
Or, ce que je voudrais c'est que ces domaines restent bien en dur et pour des raisons de performances, j'aimerais me passer de la redirections qui fait des connexions intempestives sur le serveur...

Je suis aussi tombé sur ça : http://forum.modrewrite.com/viewtopic.php?t=3416 mais il me semble que ça reste encore une fois une redirection :s
 
WRInaute discret
AH c'est ok j'ai trouvé sur le forum dont j'ai donné le lien, mon htaccess devient donc :
Code:
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{HTTP_HOST} ^(.*)\.wikeo\.be$ [NC]
RewriteCond %1 !^www$ [NC]
RewriteRule ^(.*)$ /online/%1/$1 [L]

RewriteRule ^online/([0-9a-zA-Z\-_]+)/news.rss$  /online/rss.php?id=$1  [L]
RewriteRule ^online/([0-9a-zA-Z\-_]+)/?$  /online/index.php?id=$1&page=  [L]
RewriteRule ^online/([0-9a-zA-Z\-_]+)/news-(.+).phtml$  /online/index.php?id=$1&page=news.phtml&news_lire=$2  [L]
RewriteRule ^online/([0-9a-zA-Z\-_]+)/(.*).phtml$  /online/index.php?id=$1&page=$2.phtml  [L]
RewriteRule ^online/([0-9a-zA-Z\-_]+)/(.*).html$  /online/index.php?id=$1&page=$2.html  [L]

Et voila je te remercie 1000 fois pour ton aide ;)
 
Discussions similaires
Haut