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

Consultez la formation URL Rewriting et sites dynamiques de WebRankInfo / Ranking Metrics

bistory
WRInaute discret
WRInaute discret
 
Messages: 96
Inscription: Sam Juin 17, 2006 19:11

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

Message le Mer Juil 18, 2007 12:39

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: Tout sélectionner
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]
Dernière édition par bistory le Mer Juil 18, 2007 20:36, édité 1 fois.


KOogar
WRInaute accro
WRInaute accro
 
Messages: 3339
Inscription: Mar Nov 16, 2004 18:27

Message le Mer Juil 18, 2007 14:10

Code: Tout sélectionner
# 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]

bistory
WRInaute discret
WRInaute discret
 
Messages: 96
Inscription: Sam Juin 17, 2006 19:11

Message le Mer Juil 18, 2007 14:52

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


KOogar
WRInaute accro
WRInaute accro
 
Messages: 3339
Inscription: Mar Nov 16, 2004 18:27

Message le Mer Juil 18, 2007 15:36

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

bistory
WRInaute discret
WRInaute discret
 
Messages: 96
Inscription: Sam Juin 17, 2006 19:11

Message le Mer Juil 18, 2007 16:07

Il doit bien y avoir une solution avant que je change de serveur, je pouvais me passer de redirection, mais la ligne
RewriteRule (.*) http://www.domain.com/online/%1/$1 [L,R=301]
était ainsi :
RewriteRule (.*) http://www.domain.com/online/%1/$1 [P,L]
Mais depuis que j'ai changé de serveur, cette configuration-là ne fonctionne plus...


KOogar
WRInaute accro
WRInaute accro
 
Messages: 3339
Inscription: Mar Nov 16, 2004 18:27

Message le Mer Juil 18, 2007 16:27

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 ?

bistory
WRInaute discret
WRInaute discret
 
Messages: 96
Inscription: Sam Juin 17, 2006 19:11

Message le Mer Juil 18, 2007 16:55

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

bistory
WRInaute discret
WRInaute discret
 
Messages: 96
Inscription: Sam Juin 17, 2006 19:11

Message le Mer Juil 18, 2007 20:35

AH c'est ok j'ai trouvé sur le forum dont j'ai donné le lien, mon htaccess devient donc :
Code: Tout sélectionner
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 ;)


Formation recommandée sur ce thème :

Formation URL Rewriting et sites dynamiques : apprenez comment mettre en place la réécriture d'URL, comment optimiser vos URL et profiter de vos pages dynamiques pour booster votre référencement. Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :

Consultez la description détaillée des produits ou services de Google suivants : Google Code



Qui est en ligne

Utilisateurs parcourant ce forum: Guizbizet et 0 invités